私はこのコードを持っています。
for(int j=0; j<=n; j++)
{
Xnew2 = -j*(Y+R2)/n;
Ynew2 = pow((((Y+R2)*(Y+R2)) - (Xnew2*Xnew2)), 0.5);
if(abs(Ynew2) <=R1)
cout<<"\n("<<Xnew2<<", "<<Ynew2<<")"<<endl;
AngleB2 = acos(Xnew2/pow((pow(Xnew2, 2))+(pow(Ynew2, 2)), 0.5))* (180/Pi);
cout<<"\nAngle 'B' = "<<AngleB2<<" Degrees"<<endl;
AngleV2 = acos(((pow(Xnew2, 2))+(pow(Ynew2, 2))+(pow(100, 2))-(pow(65, 2)))/(200*(pow(((pow(Xnew2, 2))+(pow(Ynew2, 2))), 0.5))))* (180/Pi);
cout<<"Angle 'V' = "<<AngleV2<<" Degrees"<<endl;
AngleTheta12 = AngleB2 - AngleV2;
cout<<"Theta 1 = "<<AngleTheta12<<" Degrees"<<endl;
AngleTheta22 =(asin(pow(((sin(AngleV2*Pi/180))*(pow(((pow(Xnew2, 2))+(pow(Ynew2, 2))), 0.5))/65), 0.5)))*(180/Pi);
cout<<"Theta 2 = "<<AngleTheta22<<" Degrees"<<endl;
}
本質的にクレセントムーンであるSyastro文字「K」を描くことができるロボットの手のためのプログラムを設計しています。上記のように、最初に曲線上の点を計算し、次にロボットアームの角度を計算する必要があります。
制限がない場合(形状の外側の線の点/角度を計算する場合)にコードを機能させることができましたが、「for」ループに制限を課そうとするとすぐに、ポイントを失いましたが、それでも多くの角度がリストされています...。
誰かが私がどこで間違っているのか考えていますか?'Y'座標が310から-310の間になるように、値を制限しようとしています。
これを理解してくれてありがとう!