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

shadertoy sdSegment 原理

sdSegment 原理

float sdSegment( in vec2 p, in vec2 a, in vec2 b )
{vec2 pa = p-a, ba = b-a;float h = clamp( dot(pa,ba)/dot(ba,ba), 0.0, 1.0 );return length( pa - ba*h );
}

原理:
u ⃗ \vec{u} u v ⃗ \vec{v} v 在夹角是 θ \theta θ 的投影长度是:

| F ⃗ | = ∣ u ⃗ ∣ c o s θ |\vec{F}| = |\vec{u}| cos \theta F =u cosθ
请添加图片描述

结合点乘公式:
u ⃗ ⋅ v ⃗ = ∣ u ⃗ ∣ ∣ v ⃗ ∣ c o s θ \vec{u} \cdot \vec{v} = |\vec{u}| |\vec{v}| cos \theta u v =u ∣∣v cosθ

投影长度可以写成:
| F ⃗ | = u ⃗ ⋅ v ⃗ ∣ v ⃗ ∣ |\vec{F}| = \frac{\vec{u} \cdot \vec{v}}{|\vec{v}|} F =v u v

因为 F ⃗ \vec{F} F v ⃗ \vec{v} v 方向相同, 只是长度不同。那么投影长度占向量 v ⃗ \vec{v} v 长度的比例:
h = u ⃗ ⋅ v ⃗ ∣ v ⃗ ∣ 2 = u ⃗ ⋅ v ⃗ v ⃗ ⋅ v ⃗ \begin{aligned} h &= \frac{\vec{u} \cdot \vec{v}}{|\vec{v}|^2} \\ &= \frac{\vec{u} \cdot \vec{v}}{\vec{v} \cdot \vec{v}} \end{aligned} h=v 2u v =v v u v

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 工厂现场多功能帮手,三防平板改善管理体验
  • 简化登录流程,助力应用建立用户体系
  • 计算机视觉概念科普
  • linux 安装kafaka单体服务
  • OD C卷 - Wonderland游乐园
  • 【第57课】SSRF服务端请求Gopher伪协议无回显利用黑白盒挖掘业务功能点
  • Maven的使用
  • 多线程面试常问
  • MarkDown演示
  • 【PostgreSQL教程】PostgreSQL 高级篇之触发器
  • 以简单的例子从头开始建spring boot web多模块项目(四)-多模块工具类
  • Android TableLayout中TextView文本不居中问题
  • 大数据-91 Spark 集群 RDD 编程-高阶 RDD广播变量 RDD累加器 Spark程序优化
  • FastAPI vs Flask: 专业对比与选择
  • 使用 setResponseStatus 函数设置响应状态码
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • CAP理论的例子讲解
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • JDK 6和JDK 7中的substring()方法
  • leetcode-27. Remove Element
  • linux安装openssl、swoole等扩展的具体步骤
  • Linux下的乱码问题
  • linux学习笔记
  • React组件设计模式(一)
  • Vue ES6 Jade Scss Webpack Gulp
  • vuex 笔记整理
  • 服务器从安装到部署全过程(二)
  • 聊聊flink的TableFactory
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 通过npm或yarn自动生成vue组件
  • 我的zsh配置, 2019最新方案
  • 一道闭包题引发的思考
  • 从如何停掉 Promise 链说起
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • ######## golang各章节终篇索引 ########
  • (33)STM32——485实验笔记
  • (多级缓存)缓存同步
  • (力扣)1314.矩阵区域和
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (算法)Travel Information Center
  • (算法)硬币问题
  • (五)c52学习之旅-静态数码管
  • (一)kafka实战——kafka源码编译启动
  • (转)Unity3DUnity3D在android下调试
  • (转)visual stdio 书签功能介绍
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .Net - 类的介绍
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET Framework 3.5安装教程
  • .NET 指南:抽象化实现的基类
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .net实现头像缩放截取功能 -----转载自accp教程网