Я пытаюсь нарисовать кривые, используя метод Эрмита в C ++. Я знаю, что две точки являются начальной и конечной точками, а две другие дают касательные на двух концах. Конечные точки можно угадать напрямую, но как определить значение касательных. Когда я даю простые значения, я оказываюсь либо на прямой линии, либо на кривой.
Мой код:
//Using tangents
#include<iostream>
#include "graphics.h"
//#include"DDALine.h"
using namespace std;
void calcP(float P0x, float P0y, float R0x, float R0y, float P1x, float P1y, float R1x, float R1y, float Px, float Py, float t){
Px = (2 * t * t* t -3*t*t +1)*P0x + ( t*t*t - 2 *t*t +t)*R0x + (-2 * t*t*t + 3*t*t )*P1x +(t*t*t -t*t )*R1x;
Py = (2 * t * t* t -3*t*t +1)*P0y + ( t*t*t - 2 *t*t +t)*R0y + (-2 * t*t*t + 3*t*t )*P1y +(t*t*t -t*t )*R1y;
putpixel(Px, Py, WHITE);
}
int main(){
int gd = DETECT, gm;
initgraph(&gd, &gm, "C:\\TC\\BGI");
float t = 0;
float P0x = 71, P0y = 165, R0x = -12, R0y = 2, P1x = 210, P1y = 153, R1x = 108, R1y = 0, Px= 0, Py = 0, Pz = 0;
while(t<1){
calcP(P0x, P0y, R0x, R0y, P1x, P1y, R1x, R1y, Px, Py, t);
t+=0.001;
}
getch();
closegraph();
return 0;
}
Спасибо за помощь! В острой необходимости. :)