2011-07-11 8 views
1

私はリアルタイムでC++を使ってオブジェクトをトリミングしています。ここで私は点AとBの2つの座標を知っています。私はAB線に垂直な第3点Zを探したいと思います。 Z(x3、y3)である。それはABZ角度が90であることを意味します。私はBZスロープとBZ距離を使用したときに2つの巨大な方程式を得ました。私はそれを単純化し、次の方程式を得る。ここ実行時にyキューブ方程式を解く

y3 (y3 (k1 + y3) + k) = k ;

K1、K2、K3は、与えられたスタンスです。しかし、k1 , k2 , k3はお互いに同じではありません。 ここでy3を探しています。私を助けてください。

+0

y3で方程式を単純化します。これはプログラミングに関する質問ではありません。 –

+1

代わりにここに投稿してみてください:http:// mathoverflow。net/ –

+2

@JonCage:私はこれが_researchレベルの数学の質問_になるとは本当に信じていません。 –

答えて

1

3次方程式はan exact solutionです。それは醜いが、そこに行く。

数値の不安定性が現れる病理学的なケースがあることに注意してください。正確さが重要な場合は、複数の方法を使用する必要があります。

This guyには解決コードがあり、Dr. Mathには説明があります。

1

少なくとも、私があなたの 問題を理解していれば、これはあまりにも複雑に聞こえます。次いで、Z(それがBでABに垂直 線上にある以外)には他の制約がない場合:

Z.x = B.x - (A.y - B.y); 
Z.y = B.y + (A.x - B.x); 

は、問題を解決します。 Zに追加の制約がある場合、上記の 式は、Bを使用して線を定義する点を依然として示しています。 制約に応じて、実際のZの計算はより複雑になる可能性がありますが、それでもやはり3次方程式を含むべきではありません。

キューブルートを取る必要がある場合は、もちろん、最も簡単な解決策は、標準機能cbrtを使用することです。

1

一般的に、あなたは三次方程式を解決したい場合は

のx^3 +斧^ 2 + BX + C = 0

、あなたはすでに2つのソリューションのX1、X2を持っているとされています第三ソリューションX3 を探して、あなたはその

のx^3 +斧^ 2 + BX + C =(X-X1)(X-X2)(X-X3)、

を観察することによってこれを行うことができます

-a = X1 + X2 + X3

又は

X3 = -a -X1 -x2

はしたがって見つけること

ひいては他の2つの解が与えられた立方体の3番目の解は簡単です。