今天小编为大家带来我的世界任意多面体选择范围是什么,如何利用,想知道的玩家一定要看下面的内容!
任意平面上的有界区域,做过其中一点与该平面相切的球。当球的半径越来越大时,球面上投射到该区域的部分越来越接近该区域。
所以我们可以用球去夹出一个多面体区域来。具体而言,对于每个多边形,首先确定其法线,然后选择充分大的半径,例如1000000,然后任选多边形上一点,计算在该点相切的球的球心。注意要让球心在多面体区域外。然后给所有实体添加tag,移除各个球内的实体tag即可。
例如:选择玩家视野前方±30°角内,高为10米的的正四棱锥区域内实体。
首先execute positioned ^ ^ ^-10000 run tag @e[distance=..10010] add temp
复制代码我们假设玩家朝向正南方(z+),则该四棱锥的底面的顶点是A=(10 tan30°,0,10)、B=(0,-10 tan30°,10)、C=(-10 tan30°,0,10)、D=(0,10 tan30°,10)。
计算法线,例如OAB(逆时针方向向正四棱锥外),
|i j k |
|10 tan30° 0 10|=57.7 i-57.7 j -33.33 k=(57.7,-57.7,-33.33)
|0 -10 tan30° 10|
假设球心为 (17320.50808,-17320.50808,-10000),半径为26457.5131,于是
execute positioned ^17320.50808 ^-17320.50808 ^-10000 run tag @e[distance=..26457.5131] remove temp
复制代码类似地处理其它四个面
execute positioned ^-17320.50808 ^-17320.50808 ^-10000 run tag @e[distance=..26457.5131] remove temp
execute positioned ^17320.50808 ^17320.50808 ^-10000 run tag @e[distance=..26457.5131] remove temp
execute positioned ^-17320.50808 ^17320.50808 ^-10000 run tag @e[distance=..26457.5131] remove temp
复制代码即可。
代码未经测试,如需使用请自行测试。