나는 주변을 둘러 보았고, 내가하려고하는 것이 아무것도없는 것처럼 보인다. 이미 그려진 포인트 그래프가 주어진다면 마우스를 사용하여 2 차 베 지어 곡선에 필요한 세 번째 제어 포인트를 만든 다음 모든 포인트의 새 위치를 계산하십시오.베 지어 곡선을 사용하여 그래프 조작하기
나는 위키 백과에서 주로이 공식을 바탕으로 작업하고 있습니다.
내가하고있는 일은 다음과 같습니다.
foreach (PointPair p in RelevantPoints)
{
double t = (p.X - startPoint.X)/(endPoint.X - startPoint.X);
p.Y = p.Y -
Functions.CalculateBezierPoint(startPoint.Y, endPoint.Y,
referencePoint.Y, t);
}
public static double CalculateBezierPoint(double startY, double endY,
double referenceY, double t)
{
return Math.Pow(1 - t, 2)*startY + 2*(1 - t)*t*referenceY +
Math.Pow(t, 2)*endY;
}
여기에서 referencePoint
은 현재 마우스 위치입니다. 저는 수학자는별로 아니지만 현재로서는 분명합니다. 그래프는 베 지어 커브에서 예상하는 것처럼 마우스 위치쪽으로 편향되는 대신 간단한 포물선으로 구부러집니다.
이 경우 X 값을 이동할 수 없기 때문에 Y 값만 계산했습니다.
t
도 X 값이 시간의 99 %이고 일정한 거리가 아니기 때문에 매번 계산됩니다. t
값이 의미하는 바를 오해하지 않는 한, 그 일에 영향을 미치지 않아야합니다.
내가 잘못하고있는 것에 대한 제안 사항이 있으십니까?
그것을 이해 방법't' 산출되는 점 사이 단지 단계이다. 내가 't'를 계산하는 방식은 나에게 0과 1 사이의 값을 줄 것이고, 수동으로 증가시키는 것과 같은 목적을 제공해야한다. 왜 이것이 작동하지 않는지 더 잘 설명 할 수 없다면? – Trent
새로운 베 지어 곡선을 그리려면 새로운 P0, P1, P2를 사용하면 새로운 베 지어 곡선을 얻을 수 있습니다. 오래된 커브는 부적합합니다. – afkfurion
제 질문을 제대로 읽지 않았다고 생각합니다. 예전의 커브는 매우 적절합니다. X 값은 움직일 수 없습니다. 아마 베 지어 커브는 내가 한 것에 대한 해결책이 아니지만, 당신이 말하는 것은 아닙니다. – Trent