#include <iostream>
#include <cmath>
using namespace std;
float cubicBezier(float x2, float y2, float x3, float y3, float t)
{
if(t > 1)t = 1;
else if (t < 0)t = 0;
if(x2 > 1)x2 = 1;
else if (x2 < 0)x2 = 0;
if(y2 > 1)y2 = 1;
else if (y2 < 0)y2 = 0;
if(x3 > 1)x3 = 1;
else if (x3 < 0)x3 = 0;
if(y3 > 1)y3 = 1;
else if (y3 < 0)y3 = 0;
float x1, y1 = 0;
float x4, y4 = 1;
std::cout << "x: " << ((x1*(pow ((1-t), 3.0)))+(3*x2*t*(pow ((1-t), 2.0)))+(3*x3*(pow (t, 2.0))*(1-t))+(x4*(pow ((t), 3.0)))) << std::endl;
std::cout << "y: " << ((y1*(pow ((1-t), 3.0)))+(3*y2*t*(pow ((1-t), 2.0)))+(3*y3*(pow (t, 2.0))*(1-t))+(y4*(pow ((t), 3.0)))) << std::endl;
std::cout << "t: " << t << std::endl;
}
int main()
{
for(float t = 0; t <= 1.1; t+=0.1)
cubicBezier(0, 0, 1, 1, t);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmZsb2F0IGN1YmljQmV6aWVyKGZsb2F0IHgyLCBmbG9hdCB5MiwgZmxvYXQgeDMsIGZsb2F0IHkzLCBmbG9hdCB0KQp7CglpZih0ID4gMSl0ID0gMTsKCWVsc2UgaWYgKHQgPCAwKXQgPSAwOwoJaWYoeDIgPiAxKXgyID0gMTsKCWVsc2UgaWYgKHgyIDwgMCl4MiA9IDA7CglpZih5MiA+IDEpeTIgPSAxOwoJZWxzZSBpZiAoeTIgPCAwKXkyID0gMDsKCWlmKHgzID4gMSl4MyA9IDE7CgllbHNlIGlmICh4MyA8IDApeDMgPSAwOwoJaWYoeTMgPiAxKXkzID0gMTsKCWVsc2UgaWYgKHkzIDwgMCl5MyA9IDA7CglmbG9hdCB4MSwgeTEgPSAwOyAKCWZsb2F0IHg0LCB5NCA9IDE7CglzdGQ6OmNvdXQgPDwgIng6ICIgPDwgKCh4MSoocG93ICgoMS10KSwgMy4wKSkpKygzKngyKnQqKHBvdyAoKDEtdCksIDIuMCkpKSsoMyp4MyoocG93ICh0LCAyLjApKSooMS10KSkrKHg0Kihwb3cgKCh0KSwgMy4wKSkpKSA8PCBzdGQ6OmVuZGw7CglzdGQ6OmNvdXQgPDwgInk6ICIgPDwgKCh5MSoocG93ICgoMS10KSwgMy4wKSkpKygzKnkyKnQqKHBvdyAoKDEtdCksIDIuMCkpKSsoMyp5MyoocG93ICh0LCAyLjApKSooMS10KSkrKHk0Kihwb3cgKCh0KSwgMy4wKSkpKSA8PCBzdGQ6OmVuZGw7CglzdGQ6OmNvdXQgPDwgInQ6ICIgPDwgdCA8PCBzdGQ6OmVuZGw7Cn0KaW50IG1haW4oKQp7Cglmb3IoZmxvYXQgdCA9IDA7IHQgPD0gMS4xOyB0Kz0wLjEpCgkJY3ViaWNCZXppZXIoMCwgMCwgMSwgMSwgdCk7CglyZXR1cm4gMDsKfQ==