Как построить две равноудаленные точки перемещения? - PullRequest
1 голос
/ 15 августа 2010

Представьте себе поверхность, у которой есть 2 точки, которые движутся по поверхности (в результате чего появляются различные линии и кривые), соблюдая при этом следующие условия.постоянное расстояние C друг от друга.

Каждая точка имеет свой собственный вектор скорости и направления.Конечно, оба эти параметра будут ограничены в зависимости от условия 1. Пр.если точка 1 имеет скорость 0, а точка 2 движется, то она будет иметь форму круга, а точка 1 будет центром.

Я не могу выразить эти условия в программных конструкциях.Может ли кто-нибудь помочь мне с этим?

Я использую OpenGL, но мне подойдет даже псевдокод.

Ответы [ 2 ]

1 голос
/ 16 августа 2010
vec3 center;



while(1):
    vec3 centerDirection = ...
    center += centerDirection
    float angle = ...
    vec3 dir(cos(angle), 0, sin(angle))
    vec3 p1 = center + (C/2) * dir
    vec3 p2 = center - (C/2) * dir
    draw p1
    draw p2

Это решение, при котором вы перемещаете центр круга и убедитесь, что p1 и p2 - две диаметрально противоположные точки. Другое решение:

while 1:
    p1 += random
    p2 += random
    delta = p1-p2
    delta.normalize()
    p2 = p1 + C * delta

т.е. вы ограничиваете p2, а не обе точки.

0 голосов
/ 19 августа 2010

В openGL я достиг, как показано ниже

PlotTwoPoints (-SPAN, 0, + SPAN, 0); // две точки на оси х

Затем я повернул систему координат и продолжал рисовать две точки над двумя точками.

Simple!

...