import matplotlib.pyplot as plt
import math as math
import numpy as np
##只能输入一条直线==两个点坐标,得到直线方程 y=kx+b
def Equation(A, B):  # points list 坐标[x,y]if B[0] - A[0] == 0:raise ('数据错误!points:', points)res = [0, 0]#计算直线方程K:=y1-y0/x1-x0res[0] = ((B[1] - A[1]) / (B[0] - A[0]))# 计算直线方程B:=(X1*Y0-X0*Y1)/X1-X0res[1] = ((B[0] * A[1] - A[0] * B[1]) / (B[0] - A[0]))return resA=[0, 1]
B=[2, 2]
points = [[0, 1], [2, 2]]
fig = plt.figure('result')
plt.plot([A[0], B[0]], [A[1], B[1]], 'rx')
# 'g-'表示绿色实线绘制
plt.plot([A[0], B[0]], [A[1], B[1]], 'g-')#作用根据两个点是的坐标计算直线的斜率和截距
temp_l = Equation(A, B)
#根据直线的斜率和截距计算A点移动b后的坐标
# 从传入的直线的坐标方程取出斜率和截距
k = temp_l[0] * 1.0
b = temp_l[1] * 1.0
# 从传入的点的坐标取出点的坐标
xa = A[0] * 1.0
ya = A[1] * 1.0
xb = B[0] * 1.0
yb = B[1] * 1.0
#一个坐标点应该存在两个对称的点
d=1
A1X = (math.sqrt(k * k + 1) * d + ya + xa / k - b) / (k + 1 / k)
A1Y = (xa - A1X) / k + ya
k_new1 = (k * 1.0)
b_new1= A1Y - k * A1XA2X = (ya + xa / k - b - math.sqrt(k * k + 1) * d) / (k + 1 / k)
A2Y = (xa - A2X) / k + ya
k_new2 = (k * 1.0)
b_new2= A2Y - k * A2XB1X = (math.sqrt(k * k + 1) * d + yb + xb / k - b) / (k + 1 / k)
B1Y = (xb - B1X) / k + yb
kB_new1 = (k * 1.0)
bB_new1= B1Y - k * B1XB2X = (yb + xb/ k - b - math.sqrt(k * k + 1) * d) / (k + 1 / k)
B2Y = (xb - B2X) / k + yb
kB_new2 = (k * 1.0)
bB_new2= B2Y - k * B2Xplt.plot([A1X, A2X], [A1Y, A2Y], 'r.')  # 平移后直线起始端点
plt.plot([B1X, B2X], [B1Y, B2Y], 'r.')  # 平移后直线起始端点plt.pause(66660000)
plt.draw()

一条直线平行与斜率方向平移距离d后的坐标相关推荐

  1. 学习OpenCV3:判断两条直线平行,并计算平行距离

    一.问题   已知两条直线 l 1 ( x 1 , y 1 , x 2 , y 2 ) l_1(x_1,y_1,x_2,y_2) l1​(x1​,y1​,x2​,y2​)和 l 2 ( x 3 , y ...

  2. matlab 平行,MATLAB判断两条直线平行

    两条直线平行的判据比较简单,只要斜率相等就可以了.但也有特殊情况,比如平行于y轴的直线斜率没有定义. 综合考虑以上情形,就不难将程序写出来,具体如下: 函数 isparallellines.mfunc ...

  3. 使用C++面向对象思想计算两条直线交点

    使用C++面向对象思想计算两条直线交点 以下是使用C++面向对象思想计算两条直线交点的示例代码: #include <iostream>using namespace std;class ...

  4. java根据两条直线的四个坐标点证明这两条线平行(计算直线斜率)或者三个点在一条直线上

    第一步:原理: 1.若两条直线斜率存在,则:斜率相等,则这两直线平行; 2.若两条直线斜率都不存在,则这两条直线也平行.所以说,如果两条直线平行,则它们的斜率相等[是错误的] 反过来:若两直线斜率相等 ...

  5. 两直线平行交叉相乘_人教版初中数学七年级下册 平行线判定2公开课优质课课件教案视频...

    平 行 线 的 判 定 一.教材分析 1.主要内容及其地位 本节的主要内容是平行线的判定公理及两个判定定理,由分析画平行线的过程得知,画平行线实际上就是画相等的同位角,由此得到平行线的判定公理--&q ...

  6. opencv求解两条直线的交点

    假设现在有一个点集,需要拟合出最能够表达点集轮廓的几条直线,并求直线之间的交点. 从点集中拟合直线可以采用的方法:随机抽样一致性(RANSAC),霍夫变换(though transform) 思路1 ...

  7. 树莓派小车识别场地内特定颜色的直线并据此修正方向的方法

    树莓派小车识别场地内特定颜色的直线并据此修正方向的方法 树莓派颜色识别原理 检测水平线偏差问题说明 检测水平线偏差原理 关于确定映射函数f()的补充说明: 树莓派颜色识别原理 请参看我的这篇文章树莓派 ...

  8. 两条直线的交点 c语言,计算两条直线的交点(C#)

    PS:从其他地方看到的源码是有问题的.下面是修正后的 /// /// 计算两条直线的交点 /// /// L1的点1坐标 /// L1的点2坐标 /// L2的点1坐标 /// L2的点2坐标 /// ...

  9. 每天一道LeetCode-----平面上n个点,计算最多有多少个点在一条直线上

    Max Points on a Line 原题链接Max Points on a Line 给出2D平面中的n个坐标点,计算最多有多少个点在一条直线上 一条直线可以用斜率表示,即如果已知(x1,y1) ...

最新文章

  1. 部署软件RDMA的步骤
  2. 以《剑与远征》为例,浅析新型挂机放置游戏的游戏特色特点
  3. 在mvc4里怎样引用:System.Web.Optimization和entityframework
  4. dedeCMS会员注册功能,如何开启或关闭?
  5. 查看总耗时_吉林德惠电力施工总承包资质代办
  6. 张一鸣退出上海字跳公司法定代表人
  7. ios 企业证书 ipa 重新签名发布
  8. python thrift 示例
  9. 19.Virtual Type
  10. Java基础,删除指定索引的元素,编程思路详解
  11. html如何导入字体样式表,导入html字体及其样式变体?
  12. Android自定义输入车牌号键盘、车牌简称 | 数字 | 字母键盘
  13. nef是什么格式?nef格式用什么软件打开?nef格式怎么转换成jpg
  14. 云计算的发展趋势是什么?
  15. Boggle问题积累
  16. 苹果笔记本怎么查看计算机基本信息,如何查询苹果电脑型号_查询苹果电脑型号的方法...
  17. 大学生涯(一)电脑工具篇
  18. namedtuple
  19. 关于element-ui的blur事件失效,select的blur的bug,以及row在@blur延迟的解决
  20. 农地里怒放的生命:常锋植保无人机

热门文章

  1. 百度语音识别api QT window下 调试应用
  2. js unescape java_java中对应javascript的escape和unescape的工具
  3. ModBus通信协议详解(基于RS-485)
  4. Ubuntu 18.04安装远程桌面
  5. 【ROS实操1编码实现乌龟运动控制,让小乌龟做圆周运动。】
  6. Java实现下载和删除oss图片、音频等等
  7. 商业分析 CBAP考试 每章节输入输出; Guidelines and Tools; Stakeholders
  8. Window10怎么清理电脑的虚拟内存以及查询系统激活状态
  9. 【BIM+GIS】ArcGIS Pro2.8如何打开Revit模型,BIM和GIS融合?
  10. Java主流技术、优秀工具、优秀书籍和优秀网站大罗列