gpt4 book ai didi

python - 如何在 Python 中翻转两点之间的曲线,并将凸曲线转换为凹曲线?

转载 作者:行者123 更新时间:2023-12-05 05:47:14 25 4
gpt4 key购买 nike

我有两点说 p1 = (1,2)p2 = (5,4)

我想在 Python 中绘制这两点之间的直线和曲线。为了绘制曲线,我创建了一个名为 draw_curve 的函数,如下所示:

import matplotlib.pyplot as plt
import numpy as np

#Points
p1 = [1, 2]
p2 = [5, 4]

#Function to draw curved line
def draw_curve(p1, p2):

a = (p2[1] - p1[1])/ (np.cosh(p2[0]) - np.cosh(p1[0]))
b = p1[1] - a * np.cosh(p1[0])
x = np.linspace(p1[0], p2[0], 100)
y = a * np.cosh(x) + b

return x, y

然后我使用以下代码绘制两点之间的直线和曲线:

#Markers
plt.plot(p1[0], p1[1], marker = "o", markersize = 10, color = "black", label = "P1")
plt.plot(p2[0], p2[1], marker = "o", markersize = 10, color = "red", label = "P1")

#Straight line
plt.plot((p1[0], p2[0]),
(p1[1], p2[1]),
linewidth = 5,
label = "Straight line")

#Curved line
x, y = draw_curve(p1, p2)

plt.plot(x, y, linewidth = 5, label = "Curved line", color = "orange")

plt.legend()

结果图如图所示: enter image description here

我现在得到的橙色曲线是凸形的。但是,我也想在两点之间得到一条凹曲线。它应该看起来像下面的红色曲线所示。在某种程度上,我想使用蓝线作为镜子来镜像橙色曲线。

什么是合适的方法呢?功能是否可以相应调整?或者有没有办法使用蓝线作为镜像来翻转曲线?谢谢!

enter image description here

最佳答案

这似乎是简单的数学;)

获取 y 上蓝色和橙色曲线之间的差异,反转它,并添加到蓝色曲线

blue_y = np.linspace(p1[1], p2[1], 100)

plt.plot(x, blue_y+(blue_y-y)[::-1], linewidth = 5, label = "mirror", color = "red")

mirror curve

为什么数组需要反转的图形提示

enter image description here

关于python - 如何在 Python 中翻转两点之间的曲线,并将凸曲线转换为凹曲线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71046036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com