我对制作一颗心非常感兴趣。用C++制作一颗心
我意识到几何原始类型。
http://www.opentk.com/doc/chapter/2/opengl/geometry/primitives
我很好奇我怎么会去得到的曲线。我是否必须使用cmath库并以某种方式从两点连接它?
我一直在寻找很多不同的网站,关于制作心灵背后的数学。
http://www16.ocn.ne.jp/~akiko-y/heart2/index_heart2_E.html
http://www.mathematische-basteleien.de/heart.htm
我与移植这个数学来C++,而不是实际的数学挣扎;我刚开始学习这门语言。
如果有人能请我提供一些示例代码和解释,我很乐意,因为我无法在互联网上找到它。此外,我正在为此项目使用SFML框架。
谢谢!
以下是当前代码的示例。
#include <SFML/Graphics.hpp>
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>
int main()
{
sf::RenderWindow Window;
Window.create(sf::VideoMode(800, 600), "My First Smfl Game");
Window.setKeyRepeatEnabled(false);
sf::Texture pTexture;
while(Window.isOpen())
{
sf::Event Event;
while(Window.pollEvent(Event))
{
switch(Event.type)
{
case sf::Event::Closed:
Window.close();
break;
}
}
sf::VertexArray vArray(sf::Lines, 20);
vArray[0].position = sf::Vector2f(82, 300);
vArray[1].position = sf::Vector2f(82, 84);
vArray[2].position = sf::Vector2f(82, 84);
vArray[3].position = sf::Vector2f(200, 84);
vArray[4].position = sf::Vector2f(200, 84);
vArray[5].position = sf::Vector2f(200, 100);
vArray[6].position = sf::Vector2f(200, 100);
vArray[7].position = sf::Vector2f(99, 100);
vArray[8].position = sf::Vector2f(99, 100);
vArray[9].position = sf::Vector2f(99, 284);
vArray[10].position = sf::Vector2f(99, 284);
vArray[11].position = sf::Vector2f(200, 284);
vArray[12].position = sf::Vector2f(200, 284);
vArray[13].position = sf::Vector2f(200, 300);
vArray[14].position = sf::Vector2f(200, 300);
vArray[15].position = sf::Vector2f(82, 300);
vArray[16].position = sf::Vector2f(250, 300);
vArray[17].position = sf::Vector2f(300, 82);
vArray[18].position = sf::Vector2f(380, 300);
vArray[19].position = sf::Vector2f(320, 82);
for(int k = 0; k < 20; k++)
{
int red = rand() % 255;
int green = rand() % 255;
int blue = rand() % 255;
vArray[k].color = sf::Color(red, green, blue);
}
Window.draw(vArray);
Window.display();
Window.clear();
}
}
你可能想看看贝塞尔曲线和德卡斯特里奥算法。这将使平滑的曲线绘制更容易。我已经在https://www.youtube.com/watch?v=YATikPP2q70发布了视频,但是对“de Casteljau”的谷歌搜索会带来很多点击。这很容易,试试吧! –