本文整理汇总了PHP中pocketmine\math\Vector3::getIntermediateWithXValue方法的典型用法代码示例。如果您正苦于以下问题:PHP Vector3::getIntermediateWithXValue方法的具体用法?PHP Vector3::getIntermediateWithXValue怎么用?PHP Vector3::getIntermediateWithXValue使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pocketmine\math\Vector3
的用法示例。
在下文中一共展示了Vector3::getIntermediateWithXValue方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: calculateIntercept
/**
* @param Vector3 $pos1
* @param Vector3 $pos2
*
* @return MovingObjectPosition
*/
public function calculateIntercept(Vector3 $pos1, Vector3 $pos2)
{
$bb = $this->getBoundingBox();
if ($bb === null) {
return null;
}
$v1 = $pos1->getIntermediateWithXValue($pos2, $bb->minX);
$v2 = $pos1->getIntermediateWithXValue($pos2, $bb->maxX);
$v3 = $pos1->getIntermediateWithYValue($pos2, $bb->minY);
$v4 = $pos1->getIntermediateWithYValue($pos2, $bb->maxY);
$v5 = $pos1->getIntermediateWithZValue($pos2, $bb->minZ);
$v6 = $pos1->getIntermediateWithZValue($pos2, $bb->maxZ);
if ($v1 !== null and !$bb->isVectorInYZ($v1)) {
$v1 = null;
}
if ($v2 !== null and !$bb->isVectorInYZ($v2)) {
$v2 = null;
}
if ($v3 !== null and !$bb->isVectorInXZ($v3)) {
$v3 = null;
}
if ($v4 !== null and !$bb->isVectorInXZ($v4)) {
$v4 = null;
}
if ($v5 !== null and !$bb->isVectorInXY($v5)) {
$v5 = null;
}
if ($v6 !== null and !$bb->isVectorInXY($v6)) {
$v6 = null;
}
$vector = $v1;
if ($v2 !== null and ($vector === null or $pos1->distanceSquared($v2) < $pos1->distanceSquared($vector))) {
$vector = $v2;
}
if ($v3 !== null and ($vector === null or $pos1->distanceSquared($v3) < $pos1->distanceSquared($vector))) {
$vector = $v3;
}
if ($v4 !== null and ($vector === null or $pos1->distanceSquared($v4) < $pos1->distanceSquared($vector))) {
$vector = $v4;
}
if ($v5 !== null and ($vector === null or $pos1->distanceSquared($v5) < $pos1->distanceSquared($vector))) {
$vector = $v5;
}
if ($v6 !== null and ($vector === null or $pos1->distanceSquared($v6) < $pos1->distanceSquared($vector))) {
$vector = $v6;
}
if ($vector === null) {
return null;
}
$f = -1;
if ($vector === $v1) {
$f = 4;
} elseif ($vector === $v2) {
$f = 5;
} elseif ($vector === $v3) {
$f = 0;
} elseif ($vector === $v4) {
$f = 1;
} elseif ($vector === $v5) {
$f = 2;
} elseif ($vector === $v6) {
$f = 3;
}
return MovingObjectPosition::fromBlock($this->x, $this->y, $this->z, $f, $vector->add($this->x, $this->y, $this->z));
}
示例2: getIntermediateVectorsArray
/**
*
* Returns 6 intermediate vectors by positions
*
* @param Vector3 $pos1
* @param Vector3 $pos2
* @return Vector3[]
*/
public function getIntermediateVectorsArray(Vector3 $pos1, Vector3 $pos2)
{
return ['v1' => $pos1->getIntermediateWithXValue($pos2, $this->minX), 'v2' => $pos1->getIntermediateWithXValue($pos2, $this->maxX), 'v3' => $pos1->getIntermediateWithYValue($pos2, $this->minY), 'v4' => $pos1->getIntermediateWithYValue($pos2, $this->maxY), 'v5' => $pos1->getIntermediateWithZValue($pos2, $this->minZ), 'v6' => $pos1->getIntermediateWithZValue($pos2, $this->maxZ)];
}