博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
计算出线在屏幕内的最长坐标
阅读量:4687 次
发布时间:2019-06-09

本文共 1947 字,大约阅读时间需要 6 分钟。

/*** 计算出线在屏幕内的最长坐标* x1, y1 = 坐标1, x2, y2 = 坐标2*/private createAimLinePosArr(x1: number, y1: number, x2: number, y2: number) {    let posX, posY;    if (y2 == y1) y1 += 0.01    if (x2 == x1) x1 += 0.01    if (y2 < y1) {        if (x2 < x1) {            posX = 0            posY = this.binaryEquationGetY(x1, y1, x2, y2, posX)        } else {            posX = Const.STAGE_WIDTH //最大屏幕宽度            posY = this.binaryEquationGetY(x1, y1, x2, y2, posX)        }    } else if (y2 > y1) {        if (x2 > x1) {            posX = Const.STAGE_WIDTH //最大屏幕宽度            posY = this.binaryEquationGetY(x1, y1, x2, y2, posX)        } else {            posX = 0            posY = this.binaryEquationGetY(x1, y1, x2, y2, posX)        }    }    if (posY < Const.STAGE_HEIGHT) {        if (posY <= 0) {            posY = 0            posX = this.binaryEquationGetX(x1, y1, x2, y2, posY)        }        return [posX, posY]    } else {        posY = Const.STAGE_HEIGHT //最大屏幕高度        posX = this.binaryEquationGetX(x1, y1, x2, y2, posY)        if (isNaN(posX)) {            if (x2 > x1) {                posX = Const.STAGE_WIDTH            } else {                posX = 0            }            console.log("posX == NaN", x1, y1, x2, y2, posY)        }        return [posX, posY]    }}

 

/** * 二元一次方程:根据x求y */public binaryEquationGetY(x1, y1, x2, y2, x) {    let kbArr = this.binaryEquationGetKB(x1, y1, x2, y2)    let k = kbArr[0]    let b = kbArr[1]    return k * x + b}

 

/** * 二元一次方程:根据y求x */public binaryEquationGetX(x1, y1, x2, y2, y) {    let kbArr = this.binaryEquationGetKB(x1, y1, x2, y2)    let k = kbArr[0]    let b = kbArr[1]    return (y - b) / k}

 

/** * 求二元一次方程的系数 * y1 = k * x1 + b => k = (y1 - b) / x1 * y2 = k * x2 + b => y2 = ((y1 - b) / x1) * x2 + b */private binaryEquationGetKB(x1, y1, x2, y2) {    let k = (y1 - y2) / (x1 - x2)    let b = (x1 * y2 - x2 * y1) / (x1 - x2)    return [k, b]}

 

转载于:https://www.cnblogs.com/H-K-Home/p/10058791.html

你可能感兴趣的文章
splay总结
查看>>
Struts1的实现原理
查看>>
项目--Asp.net全局变量的设置和读(web.config 和 Gloab)
查看>>
[总结] LCT学习笔记
查看>>
SQL注入原理解析以及举例1
查看>>
基于.NET实现数据挖掘--聚类分析算法
查看>>
C语言连接MySql数据库(CodeBlocks)
查看>>
测试计划的编写
查看>>
Entity Framework 4.1 CodeFirst实例
查看>>
java提高篇(十九)-----数组之二
查看>>
hibernate注解方式实现一对多映射
查看>>
记录利用CSS完美解决前端图片变形问题
查看>>
UVA 10791 最小公倍数的和
查看>>
CodeForces–830B--模拟,树状数组||线段树
查看>>
学习——java内存模型
查看>>
标准输入输出重定向
查看>>
C# 命名管道
查看>>
Chinese_PRC
查看>>
Beta冲刺总结
查看>>
windows 10下让jar文件双击可以运行的解决方法
查看>>