21xrx.com
2024-05-20 13:38:40 Monday
登录
文章检索 我的文章 写文章
C++编写心形图形代码
2023-07-13 10:35:38 深夜i     --     --
C++ 编写 心形图形 代码

C++是一种强大的编程语言,可以用来创建各种各样的应用程序和图形。如果你想用C++编写一个心形图形,这篇文章将向你介绍如何做到这一点。

首先,让我们来了解一下心形的形状。心形是一个对称的形状,由两个圆弧相交组成。为了在C++中绘制一个心形,我们需要使用一些基本的数学知识来定义它的形状。

下面是一个简单的C++程序,可以绘制一个基本的心形:


#include <iostream>

#include <cmath>

using namespace std;

int main()

{

 int x, y;

 cout << "Enter the number of points: ";

 cin >> n;

 for (int i = 0; i < n; i++) {

  double t = i * 2 * M_PI / n;

  x = 16 * pow(sin(t), 3);

  y = 13 * cos(t) - 5 * cos(2 * t) - 2 * cos(3 * t) - cos(4 * t);

  cout << x << ", " << y << endl;

 }

 return 0;

}

在这个代码中,我们使用了sin和cos函数来计算心形的坐标,并使用pow函数来获取正弦函数的三次方。我们还使用了循环和用户输入来确定绘制的点数。代码输出x和y的值,我们可以使用这些值来绘制心形。

当我们在控制台中运行这个程序时,它会要求我们输入绘制心形所需的点数。然后,程序将计算心形的每个点的坐标,并在控制台中输出它们的值。

如果我们将这些坐标图形化,我们就会得到一个美丽的心形图形。要绘制心形图形,我们可以使用一些C++绘图库,如Qt或SFML。

在SFML中,我们可以使用以下代码来绘制心形:


#include <SFML/Graphics.hpp>

#include <cmath>

using namespace sf;

int main()

{

  const int WIDTH = 512;

  const int HEIGHT = 512;

  RenderWindow window(VideoMode(WIDTH, HEIGHT), "Heart Shape");

  CircleShape circle1(128);

  CircleShape circle2(128);

  circle1.setPosition(WIDTH / 4, HEIGHT / 3);

  circle2.setPosition(WIDTH * 3 / 4, HEIGHT / 3);

  VertexArray lines(LineStrip);

  for (int i = -180; i < 180; i++) {

    double t = i * M_PI / 180;

    double x = 16 * pow(sin(t), 3);

    double y = 13 * cos(t) - 5 * cos(2 * t) - 2 * cos(3 * t) - cos(4 * t);

    lines.append(Vertex(Vector2f(x * 16 + WIDTH / 2, y * 16 + HEIGHT / 2)));

  }

  while (window.isOpen())

  {

    sf::Event event;

    while (window.pollEvent(event))

    {

      if (event.type == sf::Event::Closed)

        window.close();

    }

    window.clear();

    window.draw(circle1);

    window.draw(circle2);

    window.draw(lines);

    window.display();

  }

  return 0;

}

在这个代码中,我们首先定义了窗口的大小和标题。然后我们创建两个圆,分别表示心形图案的两个半圆,将它们放置在屏幕的左上角和右上角。我们还使用VertexArray和for循环来生成心形图案的每个点的坐标。最后,我们的程序将图形绘制到屏幕上。

如果我们在SFML中运行这个程序,我们可以看到一个美丽的心形图形,用亮红色绘制。这验证了上述方法的成功。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复