2013-03-12 8 views
1

Извините за мой язык, так как английский - это мой второй язык.Поиск координат кривой Коха

Я пытаюсь преобразовать прямую линию в фрактал, известный как кривая Коха. Даны две точки прямой линии, а затем мне нужно создать кривую Коха, где я делю линию на 3 сегмента, а затем сделаю второй сегмент равносторонним треугольником. См. http://www.tgmdev.be/curvevonkoch.php.

До сих пор мы преобразуем прямую линию в 4 одинаковых сегмента, и мне нужно выяснить все координаты кривой Коха.

Я думал о прямой линии, когда координаты y двух точек одинаковы, что дает мне горизонтальную линию. если это так, я могу вычислить 3 точки равностороннего треугольника, разделив вторую половину сегмента и выбрав cos (60) правого треугольника. , как здесь: http://www.themathpage.com/atrig/30-60-90-triangle.htm

Моя проблема заключается в том, чтобы найти все координаты, когда линия Прямой диагонали, например, (200100), б (400600) или (400500), б (100500).

ответ

5

Если ваш базовый сегмент AB, с A (Ax, Ay) и B (Bx, By), то 4 подсегмента будут AP, PQ, QR, RB, как определено ниже.

Сначала определим два ортогональных векторов одинаковой длины:

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 

Точка + вектор = точка обозначения похожа на перевод.

Пример с А (100,100) и В (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) 
+0

Спасибо за ваш ответ. – Lara

+0

Я не мог понять, что вы указали: Я считаю, что A (100,100), B (400,100), а затем U (300,0), V (0,300) , но я не мог идти дальше с точкой, вы можете объяснить, как получить эту точку, используя ваши уравнения. – Lara

+0

Добавлен пример с вашими данными. –

Смежные вопросы