首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 3维线段如何求交点 [已结贴,结贴人:gismaster08]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gismaster08
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-02-12 11:20:49 楼主

    根据计算机图形学里的公式
        (C*D).A
    t=- ——————
        (C*D).B

        (A*B).C
    s=- ——————
        (A*B).D

    点p1,p2,q1,q2

    A=p1,B=p2-p1,C=q1,D=q2-q1
    直线方程
    p(t)=A+Bt
    q(s)=C+Ds

    如何判断无解和无穷解(共线问题)
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • aceattacker
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-02-17 05:22:301楼 得分:10
    p1,p2是A线段,p3,p4是B线段
    La = (p2 - p1)
    Lb = (p4 - p3)
    AB = p3 - p1
    Ra = dot( La, AB )
    Rb = dot(-Lb, AB )
    L11 = dot( La, La )
    L22 = dot( Lb, Lb )
    L12 = dot( -La, Lb )
    Ra = dot( La, )
    t = ( L11 * Rb - L12 * Ra ) / ( L11 * L22 - pow( L12, 2 ) )
    s = ( Ra - L12 * t ) / L11
    如果线段A长为0,s的等式无效
    如果任何一条线段的长度为0或两条线段平行,则t无效
    (想知道更多可以参看一下《游戏编程精粹2中》的“一种快速、健壮的计算3D线段交点方法”)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • happy__888
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 11

      9

      3

    发表于:2008-02-19 16:38:502楼 得分:10
    只判断是否是无解还是无穷解无需那么复杂,可以投机取巧的

    你已经把线段表示成为点和方向量的模式了

    1 判定是否共面
      利用异面直线之间的距离公式来判断, 不需要计算出具体的距离是多少, 所以可以只看分子,而不管分母

    2 判断是否平行
      b和d是方向向量,判断他们的点积是否是0就够了

    3 判断是否共线
      满足共面和平行条件后, 看点到直线的距离,同样不看分母而只看分子就是了

    这是理论上的数据
    你要考虑到实际的数学运算当中会有精度的问题, 浮点数和0比较的问题, 
    要想完全的判断还是有些复杂的
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved