作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在delphi中使用GLScene我需要找到一个对象(一条线或平面就足够了)和可见空间之间的交点,以确定当前显示该对象的哪一部分。
我尝试获取视锥体,但找不到方法。我正在考虑使用相机的位置、方向和视野,但我怀疑在使用 MoveAroundTarget 等方法或设置目标对象时它们没有更新。
谢谢,
马可
最佳答案
要获得截锥体,您可以使用通过将 TGLScene 当前缓冲区中的 ModelViewMatrix 和 ProjectionMatrix 相乘而获得的 ModelViewProjection 矩阵。要从矩阵中获取平面,请使用 ExtractFrustumFromModelViewProjection 函数。这是一个代码片段:
var
matMVP: TMatrix;
frustum : TFrustum;
intersectPoint : TVector;
begin
// get the ModelViewProjection matrix
matMVP:=MatrixMultiply(GLScene1.CurrentBuffer.ModelViewMatrix, GLScene1.CurrentBuffer.ProjectionMatrix);
// extract frustum
frustum:=ExtractFrustumFromModelViewProjection(matMVP);
// calculate intersection between left plane and line passing through GLArrowLineX object
if (IntersectLinePlane(GLArrowLineX.Position.AsVector,GLArrowLineX.Direction.AsVector, frustum.pLeft, @intersectPoint)=1)
then begin
// do something with intersectPoint
end else begin
// no intersection point (parallel or inside plane)
end;
end;
关于delphi - 在 GLScene 中确定与视锥体的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1979511/
我正在尝试获得一个按钮,按下该按钮时会改变颜色。当再次按下时,它应该变回原来的颜色。我究竟做错了什么? 我的模板中的按钮: export default { data: {
我是一名优秀的程序员,十分优秀!