1

英語は私の第二言語なので、私の言語で申し訳ありません。

直線をコッホ曲線として知られるフラクタルに変換しようとしています。直線の 2 点が与えられたら、直線を 3 つのセグメントに分割し、2 番目のセグメントを正三角形にするコッホ曲線を作成する必要があります。http://www.tgmdev.be/curvevonkoch.phpを参照してください。

これまでのところ、直線を 4 つの均等なセグメントに変換したので、コッホ曲線のすべての座標を計算する必要があります。

2点のy座標が同じで水平線が得られる場合、直線を考えました。もしそうなら、2 番目の線分を半分に分割し、直角三角形の cos(60) を取ることで、正三角形の 3 点を計算できます。ここのように: http://www.themathpage.com/atrig/30-60-90-triangle.htm

私の問題は、a(200,100)、b(400,600)、a(400,500)、b(100,500) など、直線が対角線の場合にすべての座標を見つける方法です。

4

2 に答える 2

7

ベース セグメントが AB で、A(Ax,Ay) と B(Bx,By) がある場合、4 つのサブセグメントは、以下に定義されているように AP、PQ、QR、RB になります。

最初に、同じ長さの 2 つの直交ベクトルを定義します。

U(Bx-Ax,By-Ay) and
V(Ay-By,Bx-Ax)

次にポイント:

P=A+(1/3)*U
Q=A+(1/2)*U+(sqrt(3)/6)*V
R=A+(2/3)*U

point+vector=point 表記は変換に似ています。

A(100,100) と B(400,100) の例:

U(300,0)
V(0,300)
P = (100,100) + (1/3)*(300,0) = (200,100)
Q = (100,100) + (1/2)*(300,0) + (sqrt(3)/6)*(0,300) = (250,186)
R = (100,100) + (2/3)*(300,0) = (300,100)
于 2013-03-12T17:28:10.830 に答える