1、已知两点A,B

2、两点构成线段P

3、线段P1与P垂直并经过A,两端为C、D

4、线段P2与P垂直并经过B,两端为E、F

5、P1、P2长度为100,A/B分别为两个线段中点

求P2、P2的4个端点C、D、E、F

void testCode(Vector2 A, Vector2 B){float k = getSlope(B, A);float angle;Vector2 C = Vector2.zero;Vector2 D = Vector2.zero;Vector2 E = Vector2.zero;Vector2 F = Vector2.zero;if (float.IsInfinity(k)){//斜率不存在,与y轴平行,为竖线//print(k);C = new Vector2(B.x - pointOffset, B.y);D = new Vector2(B.x + pointOffset, B.y);E = new Vector2(A.x - pointOffset, A.y);F = new Vector2(A.x + pointOffset, A.y);GlobalFunction.Instance.drawRect(C, D, E, F);return;}if (k == 0){//斜率=0,与x轴平行,为横线//print(angle);C = new Vector2(B.x, B.y - pointOffset);D = new Vector2(B.x, B.y + pointOffset);E = new Vector2(A.x, A.y - pointOffset);F = new Vector2(A.x, A.y + pointOffset);GlobalFunction.Instance.drawRect(C, D, E, F);return;}if (k > 0){//锐角angle = Mathf.Atan(k) * 180 / Mathf.PI;float newAngle = (90 - angle) / 180 * Mathf.PI; // 180 - 90 - anglefloat x1 = Mathf.Cos(newAngle) * pointOffset;float y1 = Mathf.Sin(newAngle) * pointOffset;C = new Vector2(B.x - x1, B.y + y1);D = new Vector2(B.x + x1, B.y - y1);E = new Vector2(A.x - x1, A.y + y1);F = new Vector2(A.x + x1, A.y - y1);GlobalFunction.Instance.drawRect(C, D, E, F);return;}if (k < 0){//钝角angle = Mathf.Atan(k) * 180 / Mathf.PI;//print(angle);float newAngle = (90 - angle) / 180 * Mathf.PI; // 90 - anglefloat x1 = Mathf.Cos(newAngle) * pointOffset;float y1 = Mathf.Sin(newAngle) * pointOffset;C = new Vector2(B.x + x1, B.y - y1);D = new Vector2(B.x - x1, B.y + y1);E = new Vector2(A.x + x1, A.y - y1);F = new Vector2(A.x - x1, A.y + y1);GlobalFunction.Instance.drawRect(C, D, E, F);return;}}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class GlobalFunction : SceneMonoSingleton<GlobalFunction>
{public Text text = null;public List<RectTransform> pointList = new List<RectTransform>();public Material mat = null;public Image img = null;private Image p1 = null;private Image p2 = null;private Image p3 = null;private Image p4 = null;void Start(){p1 = Instantiate(img);p1.name = "p1";p2 = Instantiate(img);p2.name = "p2";p3 = Instantiate(img);p3.name = "p3";p4 = Instantiate(img);p4.name = "p4";p1.transform.SetParent(img.transform);p2.transform.SetParent(img.transform);p3.transform.SetParent(img.transform);p4.transform.SetParent(img.transform);}public void drawRect(Vector2 C, Vector2 D, Vector2 E, Vector2 F){//画线float x1 = p1.GetComponent<RectTransform>().sizeDelta.x;float y1 = Vector2.Distance(C, D);p1.GetComponent<RectTransform>().sizeDelta = new Vector2(x1, y1);p1.GetComponent<RectTransform>().anchoredPosition = C;float a1 = Vector2.SignedAngle(C - D, Vector2.down);p1.transform.localRotation = Quaternion.AngleAxis(-a1, Vector3.forward);float x2 = p2.GetComponent<RectTransform>().sizeDelta.x;float y2 = Vector2.Distance(D, F);p2.GetComponent<RectTransform>().sizeDelta = new Vector2(x2, y2);p2.GetComponent<RectTransform>().anchoredPosition = D;float a2 = Vector2.SignedAngle(D - F, Vector2.down);p2.transform.localRotation = Quaternion.AngleAxis(-a2, Vector3.forward);float x3 = p3.GetComponent<RectTransform>().sizeDelta.x;float y3 = Vector2.Distance(F, E);p3.GetComponent<RectTransform>().sizeDelta = new Vector2(x3, y3);p3.GetComponent<RectTransform>().anchoredPosition = F;float a3 = Vector2.SignedAngle(F - E, Vector2.down);p3.transform.localRotation = Quaternion.AngleAxis(-a3, Vector3.forward);float x4 = p4.GetComponent<RectTransform>().sizeDelta.x;float y4 = Vector2.Distance(E, C);p4.GetComponent<RectTransform>().sizeDelta = new Vector2(x4, y4);p4.GetComponent<RectTransform>().anchoredPosition = E;float a4 = Vector2.SignedAngle(E - C, Vector2.down);p4.transform.localRotation = Quaternion.AngleAxis(-a4, Vector3.forward);text.text = string.Empty;text.text += "C = " + C + "\r\n";text.text += "D = " + D + "\r\n";text.text += "E = " + E + "\r\n";text.text += "F = " + F + "\r\n";}public void SceneQuit(){
#if UNITY_EDITORUnityEditor.EditorApplication.isPlaying = false;
#endifApplication.Quit();}
}

以防遗忘001_通过斜率求垂直线段的端点,附Unity(UI image)画线相关推荐

  1. python中怎样在图片上画线段_python 实现PIL模块在图片画线写字

    图片上画线条 import sys from PIL import Image,ImageDraw im = Image.open("th.png") draw = ImageDr ...

  2. 【小米校招笔试】给定一些线段,线段有起点和终点,求这些线段的覆盖长度,重复的部分只计算一次

    2016年小米校招笔试第一题(西安站) 1 给定一些线段,线段有起点和终点,求这些线段的覆盖长度,重复的部分只计算一次. 参考解法(Java版): package XiaoMi;/********** ...

  3. python 求点到线段距离

    1 点和线段的参数 # 点的坐标 p = [0,0]# 线段的参数 # 线段的端点1 a = [-1,1] # 线段的端点2 b = [1,1] 2 求取距离 import numpy as np d ...

  4. URAL 1348. Goat in the Garden 2[求点到线段的距离]

    题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1348 题目的意思是:求一个点到线段的最短距离和最长距离.. 最长距离比较容易,就是求点到 ...

  5. php gd库画线,[PHP] GD库(十)绘制线段与圆弧 imageline、imagesetstyle 与 imagearc 函数...

    [PHP] GD库(十)绘制线段与圆弧 imageline.imagesetstyle 与 imagearc 函数 imageline() 函数用于绘制一条线段. imagearc() 函数用于绘制椭 ...

  6. 输入n求N*N矩阵,规定矩阵沿45度线递增

    输入N,求一个矩阵N*N,规定矩阵沿45度线递增,形成zigzag数组 代码写的有点挫,不过容易理解 #include <iostream> #include<stdio.h> ...

  7. python求四分位数的方法(附纯python写法)

    数据源: nums=[] 使用numpy很简单: import numpy as npnp.percentile(nums, (25, 50, 75), interpolation='midpoint ...

  8. 两个可能常用到的几何知识(圆与椭圆的方程、求垂直向量)

    两个可能常用到的几何知识 圆和椭圆的参数方程 圆的参数方程 特殊圆的参数方程[圆心(0,0),半径R] 一般圆的参数方程[圆心(m,n),半径R] 椭圆的参数方程 引例 分析:这个说法是错误的,怎么纠 ...

  9. Revit二次开发,已知ab直线,求经过a点并垂直于ab的垂线,然后与cd线相交得到交点e

    如上图,有abcd四个点,求经过ab直线上的a点的垂线. 然后求该垂线与cd直线的交点e. //cd直线,注意要使用线段,否则获取交点e将偏差 Autodesk.Revit.DB.Line cd = ...

  10. c语言已知斜率 求倾角,倾斜解的问题

    2005-01-01 1.已知点A(m,2),B(3,1),求直线AB的斜率与倾斜角. 2.已知三角形ABC的三个顶点为A(2,8),B(-4,0),C(6,0),求过点B且将三角形ABC面积平分的直 ...

最新文章

  1. Python轻松爬取Rosimm写真网站全部图片
  2. 一次 HPC 病毒感染与解决经历
  3. 负载均衡服务器性能,服务器负载均衡:确保应用服务的高性能与高可用
  4. xgboost算法_详解xgboost算法的样本不平衡问题
  5. js 层 分页显示选择用户名
  6. Java系统资源消耗定位概述
  7. 信息学奥赛一本通(2023:【例4.8】数据统计)
  8. python对数据进行统计分析_python获取ELK数据进行统计分析
  9. 设计模式12——中介者模式
  10. 面试一线互联网大厂?那这道题目你必须得会!
  11. 没事学学docker:在阿里云中部署MYSQL的容器+测试
  12. 中兴新支点国产操作系统下载安装WPS办公软件,好用无广告
  13. 计算机网络按拓扑结构可以划分为,计算机网络按拓扑结构分为哪些
  14. 软考 软件设计师考试经验分享、题型分析
  15. 拨打国际电话的国际字冠和国家代码
  16. 关于修复msvcp110.dll丢失的问题
  17. 升级ios10默认ruby版本
  18. 监听支付宝、微信 二合一 个人免签最新,运行起来之后无需人工操作,绕过验证码
  19. 对抗样本论文阅读Intriguing properties of neural networks
  20. 布莱克斯科尔斯模型(三)热传导方程的解析解

热门文章

  1. Flink Event Time , Processing Time 和 Ingestion Time概念
  2. android手表怎样刷机,碉堡了!智能手表也能一键刷机
  3. Codeforces1457 C. Bouncing Ball(思维+dp)
  4. Excel:计数相关的函数
  5. android 打开网络设置 异常,逍遥安卓模拟器显示网络异常,请查收最完整的解决方法...
  6. html播放iOS铃音,ios – 如何在Cordova的HTML5视频播放过程中忽略铃声设置
  7. mysql子查询语句多列_MySQL:子查询
  8. 高德地图开发踩坑记录
  9. 旋转矩阵和角速度之间的关系
  10. python文本文件操作诗句给上一句输出下一句_使用RNN生成文本实战:莎士比亚风格诗句...