4

我一直在画布上绘制各种形状,并且设法找出数学来做六边形、八边形甚至星星之类的事情。我似乎无法弄清楚如何画一颗心。有没有人有绘制心形所需点的示例?

4

4 回答 4

7

我不确定是否有一种非常简单的方法可以将方程式直接绘制到Canvas(尽管您当然可以通过Path编程方式从方程式创建。..取决于您想对形状做什么,以及您想在哪里使用它,您可以Path使用路径标记语法定义 a并使用一些内置的弧线和曲线。

例如(快速把这个放在一起):

<Canvas>
    <Path Stroke="Red" StrokeThickness="3" 
        Data="M 241,200 
              A 20,20 0 0 0 200,240
              C 210,250 240,270 240,270
              C 240,270 260,260 280,240
              A 20,20 0 0 0 239,200
              " />
</Canvas>

将创建如下所示的内容: 在此处输入图像描述

它使用 2 条弧线和 2 条三次贝塞尔曲线。

您可以阅读有关语法链接的更多信息,但通过一个小解释(以下绘制了一半的心,从心顶部的倾角到底部的点,逆时针方向):

M 241,200             // Move to (241, 200)
A 20,20 0 0 0 200,240 // Draw an arc from current position to (200,240), with a size of 20x20 pixels
C 210,250 240,270 240,270 // Draw a cubic Bezier to point (240,270) with control points at (210,250), (240,270).

绘制下一条曲线,然后绘制圆弧,返回顶部,完成形状。

您可能需要尝试一下才能获得您想要的结果。

于 2013-08-24T16:49:08.383 回答
3

心形有许多数学方程——一些是极性的,一些是参数的。

一个特别有说服力的是:

x = 16sin^3(t)
y = 13cos(t) - 5cos(2t) - 2cos(3t) - cos(4t)

Wolfram 网站上有一些不错的列表。

于 2013-08-24T14:55:15.877 回答
2

您可以使用以下等式在图表上绘制心脏。

((x^2 + y^2 - 1)^3) - (x^2 * y^3) = 0

在此处输入图像描述

来源:维基百科

于 2013-08-24T15:19:04.587 回答
0

在我看来,您可以绘制两条弧线作为两个上部相交圆的一部分,这些圆的中心在同一个 X 轴上;然后是两条较低的线将它们联合起来。我试着画一个例子,我希望这张图片足够暗示:画一颗心

于 2013-08-24T14:24:19.313 回答