Я очень заинтересован в создании сердца.Создание сердца в 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, но поиск в Google «de Casteljau» принесет много хитов. Это легко, попробуйте! –