当前位置: 首页 > wzjs >正文

低价网站空间东莞大朗网络推广外包

低价网站空间,东莞大朗网络推广外包,潼南县大潼建设有限公司网站,微商加人的24种方法文章目录 1、功能描述2、代码实现3、效果展示4、完整代码5、涉及到的库函数 更多有趣的代码示例,可参考【Programming】 1、功能描述 用 python 实现,以 A和B两个点为边长,方向朝 C 绘制正方形 思路: 计算向量 AB 和 AC。使用向…

在这里插入图片描述

文章目录

  • 1、功能描述
  • 2、代码实现
  • 3、效果展示
  • 4、完整代码
  • 5、涉及到的库函数


更多有趣的代码示例,可参考【Programming】


1、功能描述

用 python 实现,以 A和B两个点为边长,方向朝 C 绘制正方形

思路:

  • 计算向量 AB 和 AC。
  • 使用向量 AB 的长度作为正方形的边长。
  • 确定正方形的旋转方向,使得一边朝向点 C。
  • 计算正方形的四个顶点。

2、代码实现

导入必要的库函数

import numpy as np
import matplotlib.pyplot as plt

定义绘制函数 draw_square,先将点转换为 numpy 数组,然后计算向量 AB 和 AC,接着计算 AB 的长度(正方形的边长)

def draw_square(A, B, C):# 将点转换为 numpy 数组A = np.array(A)B = np.array(B)C = np.array(C)# 计算向量 AB 和 ACAB = B - AAC = C - A# 计算 AB 的长度(正方形的边长)side_length = np.linalg.norm(AB)

单位化向量 AB,并计算垂直于 AB 的单位向量,分顺时针 90° 和逆时针 90° 两个方向

    # 单位化向量 AB,并计算垂直于 AB 的单位向量AB_unit = AB / side_length# 顺时针 y,-x 逆时针 -y,xperpendicular_unit1 = np.array([AB_unit[1], -AB_unit[0]])  # 顺时针旋转 90 度perpendicular_unit2 = np.array([-AB_unit[1], AB_unit[0]])  # 逆时针旋转 90 度

计算以 A 为原点,两个方向的单位向量与 AC向量的夹角,以确定绘制正方形的朝向

    A1 = A + perpendicular_unit1A2 = A + perpendicular_unit2A1C = np.dot(AC, A1)A2C = np.dot(AC, A2)

分如下几种情况,注意 A1C 和 A2C 相等的时候,说明 AC 与 AB 垂直,此时可以进一步根据距离去判断,如果连距离都相等,说明 C 在 AB(或者延长线) 上,此时方向不明确,打印提示错误信息

    if A1C > A2C:perpendicular_unit = perpendicular_unit1elif A1C< A2C:perpendicular_unit = perpendicular_unit2else:distance1 = np.sqrt((A1[0]-C[0])**2 + (A1[1]-C[1])**2)distance2 = np.sqrt((A2[0] - C[0]) ** 2 + (A2[1] - C[1]) ** 2)if distance1 < distance2:perpendicular_unit = perpendicular_unit1elif distance1 > distance2:perpendicular_unit = perpendicular_unit2else:print("Error: C 与 AB 重合!")return

计算顶点

    # 计算正方形的四个顶点# 起点是 Avertex1 = Avertex2 = A + AB_unit * side_length  # A 沿着 AB 方向移动vertex3 = vertex2 + perpendicular_unit * side_length  # 从 vertex2 沿着垂直方向移动vertex4 = vertex1 + perpendicular_unit * side_length  # 从 vertex1 沿着垂直方向移动

绘制正方形

    # 绘制正方形square_vertices = [vertex1, vertex2, vertex3, vertex4, vertex1]  # 回到起点以闭合square_vertices = np.array(square_vertices)plt.figure()plt.plot(square_vertices[:, 0], square_vertices[:, 1], 'b-')  # 绘制正方形边框plt.scatter([A[0], B[0], C[0]], [A[1], B[1], C[1]], color=['red', 'green', 'orange'])  # 绘制点 A, B, Cplt.text(A[0], A[1], ' A', fontsize=12, verticalalignment='bottom')plt.text(B[0], B[1], ' B', fontsize=12, verticalalignment='bottom')plt.text(C[0], C[1], ' C', fontsize=12, verticalalignment='bottom')plt.axis('equal')  # 保持比例plt.title('Square with side AB oriented towards C')plt.show()

3、效果展示

A = (0, 1)
B = (1, 0)
C = (-1, -1)

在这里插入图片描述
A = (0, 1)
B = (1, 0)
C = (1, 1)
在这里插入图片描述

A = (-1, 0)
B = (1, 0)
C = (0, -1)
在这里插入图片描述

A = (-1, 0)
B = (1, 0)
C = (0, 1)
在这里插入图片描述
A = (-1, -1)
B = (1, 1)
C = (-1, 1)

在这里插入图片描述
A = (-1, -1)
B = (1, 1)
C = (1, -1)

在这里插入图片描述
A = (0, -1)
B = (0, 1)
C = (-1, 0)

在这里插入图片描述

A = (0, -1)
B = (0, 1)
C = (1, 0)
在这里插入图片描述
A = (1, -1)
B = (-1, 1)
C = (-1, -1)

在这里插入图片描述
A = (1, -1)
B = (-1, 1)
C = (1, 1)

在这里插入图片描述
A = (1, 0)
B = (-1, 0)
C = (0, 1)
在这里插入图片描述

A = (1, 0)
B = (-1, 0)
C = (0, -1)

在这里插入图片描述
A = (1, 1)
B = (-1, -1)
C = (1, -1)

在这里插入图片描述
A = (1, 1)
B = (-1, -1)
C = (-1, 1)

在这里插入图片描述

A = (0, 1)
B = (0, -1)
C = (-1, 0)
在这里插入图片描述

A = (0, 1)
B = (0, -1)
C = (1, 0)
在这里插入图片描述

A = (0, 1)
B = (0, 3)
C = (0, 2)

输出

Error: C 与 AB 重合!

4、完整代码

import numpy as np
import matplotlib.pyplot as pltdef draw_square(A, B, C):# 将点转换为 numpy 数组A = np.array(A)B = np.array(B)C = np.array(C)# 计算向量 AB 和 ACAB = B - AAC = C - A# 计算 AB 的长度(正方形的边长)side_length = np.linalg.norm(AB)# 单位化向量 AB,并计算垂直于 AB 的单位向量AB_unit = AB / side_length# 顺时针 y,-x 逆时针 -y,xperpendicular_unit1 = np.array([AB_unit[1], -AB_unit[0]])  # 顺时针旋转 90 度perpendicular_unit2 = np.array([-AB_unit[1], AB_unit[0]])  # 逆时针旋转 90 度A1 = A + perpendicular_unit1A2 = A + perpendicular_unit2A1C = np.dot(AC, A1)A2C = np.dot(AC, A2)if A1C > A2C:perpendicular_unit = perpendicular_unit1elif A1C< A2C:perpendicular_unit = perpendicular_unit2else:distance1 = np.sqrt((A1[0]-C[0])**2 + (A1[1]-C[1])**2)distance2 = np.sqrt((A2[0] - C[0]) ** 2 + (A2[1] - C[1]) ** 2)if distance1 < distance2:perpendicular_unit = perpendicular_unit1elif distance1 > distance2:perpendicular_unit = perpendicular_unit2else:print("Error: C 与 AB 重合!")return# 计算正方形的四个顶点# 起点是 Avertex1 = Avertex2 = A + AB_unit * side_length  # A 沿着 AB 方向移动vertex3 = vertex2 + perpendicular_unit * side_length  # 从 vertex2 沿着垂直方向移动vertex4 = vertex1 + perpendicular_unit * side_length  # 从 vertex1 沿着垂直方向移动# 绘制正方形square_vertices = [vertex1, vertex2, vertex3, vertex4, vertex1]  # 回到起点以闭合square_vertices = np.array(square_vertices)plt.figure()plt.plot(square_vertices[:, 0], square_vertices[:, 1], 'b-')  # 绘制正方形边框plt.scatter([A[0], B[0], C[0]], [A[1], B[1], C[1]], color=['red', 'green', 'orange'])  # 绘制点 A, B, Cplt.text(A[0], A[1], ' A', fontsize=12, verticalalignment='bottom')plt.text(B[0], B[1], ' B', fontsize=12, verticalalignment='bottom')plt.text(C[0], C[1], ' C', fontsize=12, verticalalignment='bottom')plt.axis('equal')  # 保持比例plt.title('Square with side AB oriented towards C')plt.show()if __name__ == "__main__":# 示例使用A = (0, 1)B = (0, -1)C = (1, 0)draw_square(A, B, C)

5、涉及到的库函数

  • numpy
  • matplotlib

更多有趣的代码示例,可参考【Programming】


文章转载自:

http://bYLx7n5I.hnhkz.cn
http://64XOTBB4.hnhkz.cn
http://WZvAPL8n.hnhkz.cn
http://LfLDvSba.hnhkz.cn
http://o5q69rru.hnhkz.cn
http://dpSRh73D.hnhkz.cn
http://kpSWBQue.hnhkz.cn
http://n8yiIE3q.hnhkz.cn
http://UaxPxQCM.hnhkz.cn
http://0WVK31Cg.hnhkz.cn
http://z3rQQPeX.hnhkz.cn
http://QExrXaVd.hnhkz.cn
http://XWS6JGnl.hnhkz.cn
http://uIHNTttY.hnhkz.cn
http://ry6Oe4BJ.hnhkz.cn
http://Wcbxgqen.hnhkz.cn
http://h6jYwqgz.hnhkz.cn
http://9OmU0muA.hnhkz.cn
http://XO1Pe02q.hnhkz.cn
http://r659Ddt5.hnhkz.cn
http://BAtqc68I.hnhkz.cn
http://kS2jK6s4.hnhkz.cn
http://Qog3nC0u.hnhkz.cn
http://bH2wDv0F.hnhkz.cn
http://TZ8RoNTi.hnhkz.cn
http://7Ceogz6f.hnhkz.cn
http://arxpgrVO.hnhkz.cn
http://8Li0hrZe.hnhkz.cn
http://Qp6lxLdQ.hnhkz.cn
http://o4zowAYt.hnhkz.cn
http://www.dtcms.com/wzjs/650810.html

相关文章:

  • 网站建设 牛商网宝塔怎么做两个网站的解析
  • 岳阳网站网站建设网站开发合同编号如何编写
  • 免费推广产品的网站太原网站排名公司
  • qq网站临时会话郑州北环附近网站建设
  • 公司网站建设合同哪个网站是可以做书的
  • 国内做网站最大的公司微信开店免费平台
  • 网站收录说明cdn wordpress
  • 网站建设书籍在线阅读nana wordpress
  • 网站建设进度图重庆多功能网站建设
  • 语言互动网站建设云建站管理区
  • 重庆网站的网络推广360网站图标怎么做
  • 做电脑游戏破解的网站建设行业个人云网站
  • 宣城市住房和城乡建设局网站在建设厅网站上下载资质标准
  • 网站服务费算什么费用设计公司怎么找
  • 电商网站开发模板浙江高速建设公司网站
  • 做汉字词卡的网站整站优化的公司
  • 旅游政务网站建设方案建筑网官网道辉工程建设有限公司
  • ssh架构jsp网站开发交互做的不好的网站
  • 中医药文化建设网站wordpress运行php代码
  • 中国风网站模板html怎么样做外链推广网站
  • 网站建设模版文档建设银行e房通网站
  • 怎么给网站做优化定制开发电商网站建设哪家好
  • 北京哪家公司做网站微信平台
  • 如何选择邯郸网站建设重庆个人网站建设
  • 德德模板网站建设步骤手机 网站开发软件
  • 山东建设银行怎么招聘网站小制作小发明大全
  • 网站动态链接做Seo怎么办中国建设积分商城网站
  • 音乐网站如何建设进入公众号主页
  • 宁夏自治区住房与城乡建设厅网站海外搜索推广外贸网站
  • 学校网站建设培训心得体会海阳seo排名