我的PHP循环出了什么问题?它只是循环,直到它最终超时.
$max = 7;
$derp = $a / 5;
for($i = 1; $i < $max; $i++){
if($i = $derp){
echo"<option value='$derp' selected='selected'>$derp</option>";
}else{
echo"<option value='$i'>$i</option>";
}
}
Run Code Online (Sandbox Code Playgroud) 我不确定如何做到这一点。我阅读了很多关于光线投射的内容,这似乎有助于找到与某物相交的点,但在这种情况下,我只想将 2d 鼠标坐标插入到 3d 点鼠标点击的确切位置,无论缩放、旋转、那里是否有对象等。
我已经想到但没有接近的一种方法是制作一个平行于相机的隐形平面,始终垂直定向并始终与 y 轴相交。然后使用光线投射器击中飞机,根据需要绘制,然后删除飞机。不过,这似乎是一种愚蠢的方法。
目前我有一种方法效果很好,但是当线条远离原点或相机放大时会出现一些问题
在这张照片中,我从两个不同的角度画了两条线。垂直线是相机与 x 轴和 z 轴水平时的样子,我在 y 轴上画一条直线,而水平线是我在相机朝下涂鸦时发生的情况。 https://i.imgur.com/f8qw5xV.png
可以看到,这个计算好像是用到相机的距离来做的,所以距离相机越远,计算中的失真就越大。怎样才能摆脱这种扭曲?
来源:https : //github.com/AskAlice/mandala-3d-threejs 现场演示:https : //askalice.me/mandala/
这是相关的代码:
js/content.js@112
function get3dPointZAxis(event)
{
camPos = camera.position;
var mv = new THREE.Vector3((event.clientX / window.innerWidth) * 2 - 1, -(event.clientY/window.innerHeight) * 2 + 1, 1).unproject(camera);
var m2 = new THREE.Vector3(0,0,0);
var pos = camPos.clone();
pos.add(mv.sub(camPos).normalize().multiplyScalar(m2.distanceTo(camPos)));
return pos;
}
Run Code Online (Sandbox Code Playgroud)
我使用了来自两个 stackoverflow 帖子的信息来解决这个问题,它有我所描述的问题。
首先,这篇文章展示了如何绘制并将其转换为 z 轴。它是平的。但是我在尝试在三个维度上进行工作时遇到了很多麻烦。
然后我使用以下帖子中的信息至少使其与 xz 轴上的相机平行,如下所示:https : //i.imgur.com/E9AQNpH.png
<!doctype html>
<html>
<head>
<title>Canvas test</title>
</head>
<body>
<script type="text/javascript">
c = getElementById('canvas');
ctx = c.getContext("2d")'
ctx.fillRect(10,10,10,10);
</script>
<canvas id="canvas" height ="100" width = "100"></canvas>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我在Chrome和IE 9上试过这个,但它们都没有显示任何内容.你知道为什么这不起作用吗?
这可能是一些愚蠢的事情,我的朋友要求我发布这个,因为他懒得注册,但我自己无法理解.