#include <stdio.h>
#include <math.h>
#define PI 3.14159265
float theta_vals (float q1, float q2, float A_1p[3], float B_1[3]){
//float q1 = 0.001; //pitch angle
//float q2 = 0; //roll angle
//Constants
float r = 1.43;
float s = 11.1;
float A_1
[] = {A_1p
[0]*cos(q2
) + A_1p
[1]*sin(q1
)*sin(q2
) + A_1p
[2]*cos(q1
)*sin(q2
), A_1p
[1]*cos(q1
) + -A_1p
[2]*sin(q1
), -A_1p
[0]*sin(q2
) + A_1p
[1]*sin(q1
)*cos(q2
) + A_1p
[2]*cos(q1
)*cos(q2
)};
//printf("A1 = %lf , %lf , %f \n", A_1[0], A_1[1], A_1[2] );
float L_1 = 0;
//int x = sizeof(B_1);
//printf("sizeofB_1 = %d \n", x);
for (int i = 0; i < 3; i++) {
L_1
+= pow((A_1
[i
] - B_1
[i
]), 2); }
//printf("L1 = %lf \n", L_1);
//printf("L2 = %lf \n", L_2);
if (L_1 > 12.53) {
L_1 = 12.53;
} else if (L_1 < 9.67) {
L_1 = 9.67;
}
//printf("L1 = %lf \n", L_1);
//printf("L2 = %lf \n", L_2);
int sizeOfTheta = 5000;
float theta[sizeOfTheta]; //values range from 0 to pi
float delta = PI / (sizeOfTheta - 1);
for (int i = 0; i < sizeOfTheta; i++) {
theta[i] = i*delta;
}
float L[sizeOfTheta];
for (int i = 0; i < sizeOfTheta; i++) {
}
//find where L and L_1 are equal
int found = 0;
int index1 = 0;
int index2 = 0;
float tempL = -1;
float tempL1 = -1;
float tempL2 = -1;
while (found == 0) {
tempL = round(L[index1] * 1000) / 1000;
tempL1 = round(L_1 * 1000) / 1000;
if ((tempL == tempL1) && (tempL > 0) && (tempL1 > 0)) {
found = 1;
} else {
index1++;
}
}
float theta1 = theta[index1];
float thetas = theta1;
//printf("Theta1 = %lf \n", thetas);
return thetas;
}
int main() {
float A_1p[] = {11, 11, 0};
float A_2p[] = {-11, 11, 0};
float B_1[] = {11, 11, -11.1};
float B_2[] = {-11, 11, -11.1};
float q1 = 0, q2 = 0;
float theta1, theta2;
theta1 = theta_vals (q1, q2, A_1p, B_2);
theta2 = theta_vals (q1, q2, A_2p, B_1);
theta1 = (theta1/PI) * 180;
theta2 = (theta2/PI) * 180;
printf("Theta1 = %lf \n", theta1
); printf("Theta2 = %lf \n", theta2
);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CgojZGVmaW5lIFBJIDMuMTQxNTkyNjUKCgpmbG9hdCB0aGV0YV92YWxzIChmbG9hdCBxMSwgZmxvYXQgcTIsIGZsb2F0IEFfMXBbM10sIGZsb2F0IEJfMVszXSl7CiAgICAKICAgIAogICAgCiAgICAvL2Zsb2F0IHExID0gMC4wMDE7IC8vcGl0Y2ggYW5nbGUKICAgIC8vZmxvYXQgcTIgPSAwOyAvL3JvbGwgYW5nbGUKICAgIAogICAgLy9Db25zdGFudHMKICAgIGZsb2F0IHIgPSAxLjQzOwogICAgZmxvYXQgcyA9IDExLjE7CiAgICAKICAgIGZsb2F0IEFfMVtdID0ge0FfMXBbMF0qY29zKHEyKSArIEFfMXBbMV0qc2luKHExKSpzaW4ocTIpICsgQV8xcFsyXSpjb3MocTEpKnNpbihxMiksIEFfMXBbMV0qY29zKHExKSArIC1BXzFwWzJdKnNpbihxMSksIC1BXzFwWzBdKnNpbihxMikgKyBBXzFwWzFdKnNpbihxMSkqY29zKHEyKSArIEFfMXBbMl0qY29zKHExKSpjb3MocTIpfTsKICAgIAogICAgLy9wcmludGYoIkExID0gJWxmICwgJWxmICwgJWYgXG4iLCBBXzFbMF0sIEFfMVsxXSwgQV8xWzJdICk7CiAgICAKICAgIGZsb2F0IExfMSA9IDA7CiAgICAKICAgIC8vaW50IHggPSBzaXplb2YoQl8xKTsKICAgIC8vcHJpbnRmKCJzaXplb2ZCXzEgPSAlZCBcbiIsIHgpOwogICAgCiAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7IGkrKykgewogICAgICAgIExfMSArPSBwb3coKEFfMVtpXSAtIEJfMVtpXSksIDIpOwogICAgfQogICAgCiAgICBMXzEgPSBzcXJ0KExfMSk7CiAgICAKICAgIC8vcHJpbnRmKCJMMSA9ICVsZiBcbiIsIExfMSk7CiAgICAvL3ByaW50ZigiTDIgPSAlbGYgXG4iLCBMXzIpOwogICAgCiAgICBpZiAoTF8xID4gMTIuNTMpIHsKICAgICAgICBMXzEgPSAxMi41MzsKICAgIH0gZWxzZSBpZiAoTF8xIDwgOS42NykgewogICAgICAgIExfMSA9IDkuNjc7CiAgICB9CiAgICAKICAgIC8vcHJpbnRmKCJMMSA9ICVsZiBcbiIsIExfMSk7CiAgICAvL3ByaW50ZigiTDIgPSAlbGYgXG4iLCBMXzIpOwogICAgCiAgICBpbnQgc2l6ZU9mVGhldGEgPSA1MDAwOwogICAgZmxvYXQgdGhldGFbc2l6ZU9mVGhldGFdOyAvL3ZhbHVlcyByYW5nZSBmcm9tIDAgdG8gcGkKICAgIGZsb2F0IGRlbHRhID0gUEkgLyAoc2l6ZU9mVGhldGEgLSAxKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZU9mVGhldGE7IGkrKykgewogICAgICAgIHRoZXRhW2ldID0gaSpkZWx0YTsKICAgIH0KCmZsb2F0IExbc2l6ZU9mVGhldGFdOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplT2ZUaGV0YTsgaSsrKSB7CiAgICAgICAgTFtpXSA9IHIqY29zKHRoZXRhW2ldKSArIHNxcnQocG93KHMsMikgLSAocG93KHIsMikqcG93KHNpbih0aGV0YVtpXSksMikpKTsKICAgIH0KICAgIAogICAgCiAgICAvL2ZpbmQgd2hlcmUgTCBhbmQgTF8xIGFyZSBlcXVhbAogICAgaW50IGZvdW5kID0gMDsKICAgIGludCBpbmRleDEgPSAwOwogICAgaW50IGluZGV4MiA9IDA7CiAgICBmbG9hdCB0ZW1wTCA9IC0xOwogICAgZmxvYXQgdGVtcEwxID0gLTE7CiAgICBmbG9hdCB0ZW1wTDIgPSAtMTsKICAgIHdoaWxlIChmb3VuZCA9PSAwKSB7CiAgICAgICAgdGVtcEwgPSByb3VuZChMW2luZGV4MV0gKiAxMDAwKSAvIDEwMDA7CiAgICAgICAgdGVtcEwxID0gcm91bmQoTF8xICogMTAwMCkgLyAxMDAwOwogICAgICAgIGlmICgodGVtcEwgPT0gdGVtcEwxKSAmJiAodGVtcEwgPiAwKSAmJiAodGVtcEwxID4gMCkpIHsKICAgICAgICAgICAgZm91bmQgPSAxOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGluZGV4MSsrOwogICAgICAgIH0KICAgIH0KICAgIAogICAgZmxvYXQgdGhldGExID0gdGhldGFbaW5kZXgxXTsKICAgIAogICAgZmxvYXQgdGhldGFzID0gdGhldGExOwogICAgCiAgICAKICAgIC8vcHJpbnRmKCJUaGV0YTEgPSAlbGYgXG4iLCB0aGV0YXMpOwogICAgCiAgICByZXR1cm4gdGhldGFzOwp9CgppbnQgbWFpbigpIHsKICAgIAogICAgZmxvYXQgQV8xcFtdID0gezExLCAxMSwgMH07CiAgICBmbG9hdCBBXzJwW10gPSB7LTExLCAxMSwgMH07CiAgICAKICAgIGZsb2F0IEJfMVtdID0gezExLCAxMSwgLTExLjF9OwogICAgZmxvYXQgQl8yW10gPSB7LTExLCAxMSwgLTExLjF9OwogICAgCiBmbG9hdCBxMSA9IDAsIHEyID0gMDsKIGZsb2F0IHRoZXRhMSwgdGhldGEyOwogdGhldGExID0gdGhldGFfdmFscyAocTEsIHEyLCBBXzFwLCBCXzIpOwogdGhldGEyID0gdGhldGFfdmFscyAocTEsIHEyLCBBXzJwLCBCXzEpOwogCiB0aGV0YTEgPSAodGhldGExL1BJKSAqIDE4MDsKIHRoZXRhMiA9ICh0aGV0YTIvUEkpICogMTgwOwogCiAgICAKICAgIHByaW50ZigiVGhldGExID0gJWxmIFxuIiwgdGhldGExKTsKICAgIHByaW50ZigiVGhldGEyID0gJWxmIFxuIiwgdGhldGEyKTsKCn0K