2011-12-21 13 views
3

三角形を所定の倍率で拡大するアルゴリズムを探しています。 3つの座標に倍率を乗算し、三角形が原点の中心にない場合は、三角形も必要な効果ではない縮尺と平行移動します。三角形を拡大/拡大/拡大/拡大するアルゴリズム

三角形は、同じ場所に残ったままで成長する必要があります。

私の最初の考えは、三角形の中心を見つけて、三角形を原点にオフセットし、縮尺を変えて再び戻します。しかし、おそらくこれより効率的な方法がありますか?

また、これが唯一の方法であれば、三角形の中心を見つけるのに最も適切な方法は何ですか?

+4

a)最初に正しいことを心配し、*あなたがあなたが遅すぎると感じたら、効率について心配してください。 b)三角形の「中心」を定義する方法は少なくとも3761種類あります。(http://faculty.evansville.edu/ck6/encyclopedia/ETC.html) - 使用するものを決定することができます。 ) – AakashM

+0

標準的な知恵はこのケースには当てはまりません:)実際には、数千のアニメーション化された三角形を処理しなければならないラフアンドレディー3Dレンダリングであり、正確さよりも効率が重視されます。また、アルゴリズムが依存している場合は、正しい中心を選択するためのアドバイスが必要です。 – MontyGomery

+0

これは[cromulent](http://www.urbandictionary.com/define.php?term=Cromulent)三角形に対してのみ可能です。 – finnw

答えて

0

あなたは中心点があれば、あなたがこれを行うことができます:

  1. はベクトルで、中央にある三角形のポイントの一つからの距離を計算します。つまり(3,4)。
  2. これらの値を2倍(または3倍)にします。つまり(6,8)
  3. 中心と比較して新しい点をプロットします。つまりセンターは、(1,2)であった場合、あなたはそれに新しいポイントを追加するとなるだろう(7,10)
  4. 繰り返し三角形

の他の点についてこれは:)

を動作するはずです

センターを動かすには、最高点から最低点への差を計算し、それを半分にして最低点に追加します(その2点の真ん中にあるため)。それはあなたに中心を与えるはずです。

1

三角形の中心があるべきである

(X1 + X2 + X3)/ 3で、(Y1 + Y2 + Y3)/ 3

1

新しい座標を生成するために、このアルゴリズムを用いうまく

X_new = X_cg + (X_old-X_cg)*Scale 
Y_new = Y_cg + (Y_old-Y_cg)*Scale 

X_cgに動作しますと、ジオメトリの幾何学的中心である

+0

これはまさに彼の現在のアプローチです。しかし、まあ、それはまた、それが最も効率的であるという点で正しいです。 –