游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2022|回复: 4

新人:一个关于鼠标点击屏幕上区域的问题

[复制链接]

1

主题

1

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2005-8-1 10:44:00 | 显示全部楼层 |阅读模式
我现在想实现一个功能,就是在屏幕上画一个四棱锥,是可以旋转的,我想用鼠标在上面打点,这些功能我已经实现。
但我想让点只能点在这个四棱锥上,可我目前只能做到点在一个三角面在的一个大平面上,做不到点在一个三角形区域内,我曾试想过做一个投射面,投射在屏幕上,即一个平行于X-Y平面的平面,但我只能想到取X和Y值的区间,这就必然是个矩形了。
苦思无果,只得上网求助各位前辈大哥了。恳请指导。

ps:我不知道是这个问题太简单了,还是我没说清楚。或者根本就没人关心这些问题,我在国内其他一些比较大的站点上两天前问了这样的问题。两天来竟然无人回复一帖。我是很诚恳地希望得到大家的一些帮助!

2

主题

177

帖子

177

积分

注册会员

Rank: 2

积分
177
发表于 2005-8-1 15:39:00 | 显示全部楼层

Re:新人:一个关于鼠标点击屏幕上区域的问题

你应该先了解相交测试之类几何计算的基础

8

主题

182

帖子

268

积分

中级会员

Rank: 3Rank: 3

积分
268
发表于 2005-8-1 21:17:00 | 显示全部楼层

Re: 新人:一个关于鼠标点击屏幕上区域的问题

GRAPHICS_API bool GE_ArePointsSameSideOfLine( const D3DXVECTOR3* pvP1, const D3DXVECTOR3* pvP2, const D3DXVECTOR3* pvA, const D3DXVECTOR3* pvB )
{
    D3DXVECTOR3 v1 = *pvB - *pvA;
    D3DXVECTOR3 v2 = *pvP1 - *pvA;
    D3DXVECTOR3 v3 = *pvP2 - *pvA;
    D3DXVECTOR3 v4;
    D3DXVECTOR3 v5;
       
    D3DXVec3Cross(&v4,&v1,&v2);
    D3DXVec3Cross(&v5,&v1,&v3);
       
    if( D3DXVec3Dot( &v4, &v5 ) >= 0.0f )
        return true;   
    return false;
}
GRAPHICS_API bool GE_IsPointInTriangle( const D3DXVECTOR3* pvPt, const D3DXVECTOR3* pA, const D3DXVECTOR3* pB, const D3DXVECTOR3* pC )
{
    if( GE_ArePointsSameSideOfLine( pvPt, pA, pB, pC ) &&
        GE_ArePointsSameSideOfLine( pvPt, pB, pA, pC ) &&
        GE_ArePointsSameSideOfLine( pvPt, pC, pA, pB ) )
        return true;
    return false;
}
GRAPHICS_API bool GE_IsPointInQuad( const D3DXVECTOR3& vPt, const D3DXVECTOR3* pvQuad )
{
    if( GE_IsPointInTriangle( &vPt, &pvQuad[0], &pvQuad[1], &pvQuad[2] ) ||
        GE_IsPointInTriangle( &vPt, &pvQuad[1], &pvQuad[2], &pvQuad[3] ) )
        return true;
    return false;
}

8

主题

182

帖子

268

积分

中级会员

Rank: 3Rank: 3

积分
268
发表于 2005-8-1 21:18:00 | 显示全部楼层

Re: 新人:一个关于鼠标点击屏幕上区域的问题

上面的代码可以判断点是否在多边形里面。

6

主题

14

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2005-11-14 14:56:00 | 显示全部楼层

Re:新人:一个关于鼠标点击屏幕上区域的问题

楼主将你的代码传上来啊,!!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-22 15:07

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表