区块链技术博客
www.b2bchain.cn

十九、直线与球体相交的代数解法求职学习资料

D0b2wT.gif

本文介绍了十九、直线与球体相交的代数解法求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

说明

求解直线与球体相交问题,不仅可以用几何方式,也可以用代数方式,也就是通过求解一元二次方程的形式来解决问题。

方程

一元二次方程求解比较简单,可以直接套用公式来解决问题:
十九、直线与球体相交的代数解法
那么,最后交点坐标其实就是P±t*d。而 t 是否存在,也就是是否相交,则需要根据一元二次方程求根公式的判别式来判断:
十九、直线与球体相交的代数解法
如果判别式大于 0,则存在两个交点;等于 0,一个交点(相切);小于 0,无交点。

用代数方法,本质上是用平方来代替向量归一化,理论上精度更高。

代码

“`swift
static func isIntersection(line:Line, sphere:Sphere) -> Bool {
let vector = line.position – sphere.position
let a = length_squared(line.direction)
let b = dot(line.direction, vector)
let c = length_squared(vector) – sphere.radius * sphere.radius

let discriminant = b * b - 4 * a * c return discriminant >= 0

}

说明

求解直线与球体相交问题,不仅可以用几何方式,也可以用代数方式,也就是通过求解一元二次方程的形式来解决问题。

方程

一元二次方程求解比较简单,可以直接套用公式来解决问题:
十九、直线与球体相交的代数解法
那么,最后交点坐标其实就是P±t*d。而 t 是否存在,也就是是否相交,则需要根据一元二次方程求根公式的判别式来判断:
十九、直线与球体相交的代数解法
如果判别式大于 0,则存在两个交点;等于 0,一个交点(相切);小于 0,无交点。

用代数方法,本质上是用平方来代替向量归一化,理论上精度更高。

代码

“`swift
static func isIntersection(line:Line, sphere:Sphere) -> Bool {
let vector = line.position – sphere.position
let a = length_squared(line.direction)
let b = dot(line.direction, vector)
let c = length_squared(vector) – sphere.radius * sphere.radius

let discriminant = b * b - 4 * a * c return discriminant >= 0

}

说明

求解直线与球体相交问题,不仅可以用几何方式,也可以用代数方式,也就是通过求解一元二次方程的形式来解决问题。

方程

一元二次方程求解比较简单,可以直接套用公式来解决问题:
十九、直线与球体相交的代数解法
那么,最后交点坐标其实就是P±t*d。而 t 是否存在,也就是是否相交,则需要根据一元二次方程求根公式的判别式来判断:
十九、直线与球体相交的代数解法
如果判别式大于 0,则存在两个交点;等于 0,一个交点(相切);小于 0,无交点。

用代数方法,本质上是用平方来代替向量归一化,理论上精度更高。

代码

“`swift
static func isIntersection(line:Line, sphere:Sphere) -> Bool {
let vector = line.position – sphere.position
let a = length_squared(line.direction)
let b = dot(line.direction, vector)
let c = length_squared(vector) – sphere.radius * sphere.radius

let discriminant = b * b - 4 * a * c return discriminant >= 0

}

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 十九、直线与球体相交的代数解法求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们