已知三维空间中任意单位向量,求以该向量为Z轴的local正交坐标系:

如上图,每个模型都有自己local 坐标系,已知其中一个朝向求另外两个方向。

在autodesk中采用的是Arbitrary Axis Algorith。

http://www.autodesk.com/techpubs/autocad/acadr14/dxf/arbitrary_axis_algorithm_al_u05_c.htm

下面就叙述一下这个算法的原理:

Input:N(x,y,z)

Output:Local_X(x,y,z) Local_Y(x,y,z) Local_Z(x,y,z)

Begin

Local_Z =N ;

单位化Local_Z;

if(abs(Local_Z.x) < 1/64) and (abs (Local_Z.y) < 1/64)//N 不是Z轴abs

{

Local_X = Local_Z 叉乘 (0,1,0);

单位化Local_X;

Local_Y = Local_Z 叉乘 Local_X;

}

else

{

Local_X = Local_Z 叉乘 (0,0,1);

单位化Local_X;

Local_Y = Local_Z 叉乘 Local_X;

}

End

用matlab进行算法验证

function [AxisX AxisY AxisZ]=ArbitraryAxisAlgorithm(AxisZ)
AxisZ =AxisZ/sqrt(sum(AxisZ'*AxisZ));
if(AxisZ()<1e- && AxisZ()<1e- )
AxisX = cross(AxisZ,[ ]');
AxisY = cross(AxisX,AxisZ);
else
AxisX = cross(AxisZ,[ ]');
AxisY = cross(AxisX,AxisZ);
end
x=[ AxisX() ];
y=[ AxisX() ];
z=[ AxisX() ];
%plot3(x,y,z); plot3(x,y,z,'r','linewidth',);
hold on;
x=[ AxisY()]
y=[ AxisY()]
z=[ AxisY()]
figure()
plot3(x,y,z,'g','linewidth',);
hold on;
x=[ AxisZ()]
y=[ AxisZ()]
z=[ AxisZ()]
figure()
plot3(x,y,z,'b','linewidth',);
hold on;
end

运行[x y z]=ArbitraryAxisAlgorithm([1 1 1]')进行验证

任意轴算法 ( Arbitrary Axis Algorithm )的更多相关文章

  1. 谷歌的网页排序算法(PageRank Algorithm)

    本文将介绍谷歌的网页排序算法(PageRank Algorithm),以及它如何从250亿份网页中捞到与你的搜索条件匹配的结果.它的匹配效果如此之好,以至于“谷歌”(google)今天已经成为一个被广 ...

  2. HMM隐马尔科夫算法(Hidden Markov Algorithm)初探

    1. HMM背景 0x1:概率模型 - 用概率分布的方式抽象事物的规律 机器学习最重要的任务,是根据一些已观察到的证据(例如训练样本)来对感兴趣的未知变量(例如类别标记)进行估计和推测. 概率模型(p ...

  3. EM算法(Expectation Maximization Algorithm)

    EM算法(Expectation Maximization Algorithm) 1. 前言   这是本人写的第一篇博客(2013年4月5日发在cnblogs上,现在迁移过来),是学习李航老师的< ...

  4. 维特比算法(Viterbi Algorithm)

      寻找最可能的隐藏状态序列(Finding most probable sequence of hidden states) 对于一个特殊的隐马尔科夫模型(HMM)及一个相应的观察序列,我们常常希望 ...

  5. 图像处理之泛洪填充算法(Flood Fill Algorithm)

    泛洪填充算法(Flood Fill Algorithm) 泛洪填充算法又称洪水填充算法是在很多图形绘制软件中常用的填充算法,最熟悉不过就是 windows paint的油漆桶功能.算法的原理很简单,就 ...

  6. 隐马尔科夫模型,第三种问题解法,维比特算法(biterbi) algorithm python代码

    上篇介绍了隐马尔科夫模型 本文给出关于问题3解决方法,并给出一个例子的python代码 回顾上文,问题3是什么, 下面给出,维比特算法(biterbi) algorithm 下面通过一个具体例子,来说 ...

  7. 图像处理------泛洪填充算法(Flood Fill Algorithm) 油漆桶功能

    泛洪填充算法(Flood Fill Algorithm) 泛洪填充算法又称洪水填充算法是在很多图形绘制软件中常用的填充算法,最熟悉不过就是 windows paint的油漆桶功能.算法的原理很简单,就 ...

  8. 一致性哈希算法(Consistent Hashing Algorithm)

    一致性哈希算法(Consistent Hashing Algorithm) 浅谈一致性Hash原理及应用   在讲一致性Hash之前我们先来讨论一个问题. 问题:现在有亿级用户,每日产生千万级订单,如 ...

  9. 学习 Rust cookbook 之算法篇(algorithm)

    原文作者:suhanyujie 永久链接:https://github.com/suhanyujie/rust-cookbook-note 博客链接:https://ishenghuo.cnblogs ...

随机推荐

  1. Http,Https(SSL)的Url绝对路径,相对路径解决方案Security Switch 4.2的配置和使用 分类: ASP.NET 2014-11-05 12:51 97人阅读 评论(0) 收藏

    下载地址1:https://securityswitch.googlecode.com/files/SecuritySwitch%20v4.2.0.0%20-%20Binary.zip 下载地址2:h ...

  2. C#中有关字符串去重的解决方案

    今天在群里看到一个同学的面试题 题目中有一个这样的要求 //本地有个文档文件a.txt里面包含的内容分为一段字符串"abacbacde"请编写一个程序,获取文件得到对应的内容,并对 ...

  3. Handler 原理分析和使用之HandlerThread

    前面已经提到过Handler的原理以及Handler的三种用法.这里做一个非常简单的一个总结: Handler 是跨线程的Message处理.负责把Message推送到MessageQueue和处理. ...

  4. java.sql.Date to java.util.Date

    发这篇博文的题目可能无法直接表示内容,但是确实是java.sql.Date和java.util.Date. 今天在使用'net.sf.json.JSONObject'封装json数据的时候,碰到很奇怪 ...

  5. 开源字体包缩减font-spider

    最近公司产品用微软雅黑,被告~  领导要求产品后台系统必须更换字体,美工给了个宋体,个人觉得太丑,就网上搜了些处理方法使用 CSS属性 @font-face 自定义字体, 最后决定用 思源黑体 (思源 ...

  6. HDU1878欧拉回路

    这道题WA了好多次.测试数据感觉有点问题-- 并查集啊,必须有. #include<stdio.h> #include<string.h> int ad[1003]; int ...

  7. CentOS7 开关防火墙

    systemctl start firewalld.service#启动firewallsystemctl stop firewalld.service#停止firewallsystemctl dis ...

  8. HttpRequest 和HttpWebRequest的区别

    [1]问题: asp.NET C#  中HttpRequest 和HttpWebRequest的区别 HttpRequest 与HttpWebRequest 有什么区别? 网上中文的帖子很多,但是答案 ...

  9. java 抓取百度根据关键词搜索域名

    package baidusearch; import com.sun.glass.ui.SystemClipboard; import java.util.*; import java.util.H ...

  10. jquery 中 form的使用

    纠结了一下 form 表单的提交响应事件,因为在表单中,form标签会让浏览器自动提交,而我一直写的是 $(".btn").click(function()) 提交按钮的响应事件, ...