我一直在画布上画各种各样的形状,我已经设法找出数学方法来画六边形、八边形,甚至星星。我似乎不知道如何画一个心形。有人能举一个画心形所需的点的例子吗?
koaltpgm1#
在我看来,你可以画两条弧,作为两个上相交圆的一部分,这两个圆的圆心在同一个X轴上;然后用两条较低的线把它们连在一起。我试着画一个例子,我希望这幅画足够有暗示性:
wkyowqbh2#
要使用容器缩放心脏,可以通过编程生成一个PathGeometry,它不是心脏的完美表示,但我更喜欢这个稍微调整的版本,它是我根据公认的答案即兴创作的。
PathGeometry
double height = 256, width = 256; var data = $"M {width / 2},{height / 7} " + $"A 20,20 0 0 0 {width / 7},{height / 2}" + $"L {width / 2},{height} " + $"L {width / 7 * 6},{height / 2}" + $"A 20,20 0 0 0 {width / 2},{height / 7}"; return System.Windows.Media.Geometry.Parse(data);
laximzn53#
我不确定是否有一种真正简单的方法可以直接在Canvas上绘制方程(尽管你肯定可以通过编程从方程中创建Path。根据你想对形状做什么,以及你想在哪里使用它,你可以只使用Path Markup Syntax定义一个Path,并使用一些内置的弧线和曲线。例如(快速将这一条放在一起):
Canvas
Path
<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).
下一条曲线,然后弧被绘制,到达顶部,完成形状。你可能要玩一点,以获得你所追求的结果。
x7rlezfr4#
有很多数学方程可以描述心脏的形状a-有些是极坐标的,有些是参数的。一个特别有说服力的例子是:
x = 16sin^3(t) y = 13cos(t) - 5cos(2t) - 2cos(3t) - cos(4t)
这里有一个好的列表on the Woflram website。
v440hwme5#
你可以用下面的方程在图上画出一颗心脏。((x^2 + y^2 - 1)^3)-(x^2 * y^3)= 0
来源:Wikipedia
5条答案
按热度按时间koaltpgm1#
在我看来,你可以画两条弧,作为两个上相交圆的一部分,这两个圆的圆心在同一个X轴上;然后用两条较低的线把它们连在一起。我试着画一个例子,我希望这幅画足够有暗示性:
wkyowqbh2#
要使用容器缩放心脏,可以通过编程生成一个
PathGeometry
,它不是心脏的完美表示,但我更喜欢这个稍微调整的版本,它是我根据公认的答案即兴创作的。laximzn53#
我不确定是否有一种真正简单的方法可以直接在
Canvas
上绘制方程(尽管你肯定可以通过编程从方程中创建Path
。根据你想对形状做什么,以及你想在哪里使用它,你可以只使用Path Markup Syntax定义一个Path
,并使用一些内置的弧线和曲线。例如(快速将这一条放在一起):
将创建如下所示的内容:
它使用2个弧和2个三次贝塞尔曲线。
你可以阅读更多关于语法链接的内容,但只是一个小小的解释(下面画了半个心形,从心形顶部的凹陷到底部的点,逆时针方向):
下一条曲线,然后弧被绘制,到达顶部,完成形状。
你可能要玩一点,以获得你所追求的结果。
x7rlezfr4#
有很多数学方程可以描述心脏的形状a-有些是极坐标的,有些是参数的。
一个特别有说服力的例子是:
这里有一个好的列表on the Woflram website。
v440hwme5#
你可以用下面的方程在图上画出一颗心脏。
((x^2 + y^2 - 1)^3)-(x^2 * y^3)= 0
来源:Wikipedia