{
"cells": [
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"$\\displaystyle \\frac{\\sqrt{2} r s_{y} \\cos{\\left(\\theta \\right)} - s_{x} + s_{z}}{e_{x} - \\sqrt{2} e_{y} r \\cos{\\left(\\theta \\right)} - e_{z} + \\sqrt{2} r s_{y} \\cos{\\left(\\theta \\right)} - s_{x} + s_{z}}$"
],
"text/plain": [
"(sqrt(2)*r*s_y*cos(\\theta) - s_x + s_z)/(e_x - sqrt(2)*e_y*r*cos(\\theta) - e_z + sqrt(2)*r*s_y*cos(\\theta) - s_x + s_z)"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#@title plant-like intersection\n",
"import sympy as sp\n",
"\n",
"sx, sy, sz = sp.symbols('s_x s_y s_z')\n",
"ex, ey, ez = sp.symbols('e_x e_y e_z')\n",
"\n",
"t = sp.symbols('t')\n",
"\n",
"dx = ex - sx\n",
"dy = ey - sy\n",
"dz = ez - sz\n",
"\n",
"x = sx + t * dx\n",
"y = sy + t * dy\n",
"z = sz + t * dz\n",
"\n",
"r, th = sp.symbols('r \\\\theta')\n",
"\n",
"t0 = sp.solve(sp.Eq(x + y * r * sp.sin(th - sp.pi / 4), z + y * r * sp.cos(th - sp.pi / 4)), t)[0]\n",
"sp.simplify(t0)\n"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"$\\displaystyle \\frac{- \\sqrt{2} e_{x} r s_{y} \\cos{\\left(\\theta \\right)} - e_{x} s_{z} + \\sqrt{2} e_{y} r s_{x} \\cos{\\left(\\theta \\right)} + e_{z} s_{x}}{- e_{x} + \\sqrt{2} e_{y} r \\cos{\\left(\\theta \\right)} + e_{z} - \\sqrt{2} r s_{y} \\cos{\\left(\\theta \\right)} + s_{x} - s_{z}}$"
],
"text/plain": [
"(-sqrt(2)*e_x*r*s_y*cos(\\theta) - e_x*s_z + sqrt(2)*e_y*r*s_x*cos(\\theta) + e_z*s_x)/(-e_x + sqrt(2)*e_y*r*cos(\\theta) + e_z - sqrt(2)*r*s_y*cos(\\theta) + s_x - s_z)"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x0 = sp.simplify(sx + t0 * dx)\n",
"y0 = sp.simplify(sy + t0 * dy)\n",
"z0 = sp.simplify(sz + t0 * dz)\n",
"\n",
"x0"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"$\\displaystyle \\frac{- e_{x} s_{y} + e_{y} s_{x} - e_{y} s_{z} + e_{z} s_{y}}{- e_{x} + \\sqrt{2} e_{y} r \\cos{\\left(\\theta \\right)} + e_{z} - \\sqrt{2} r s_{y} \\cos{\\left(\\theta \\right)} + s_{x} - s_{z}}$"
],
"text/plain": [
"(-e_x*s_y + e_y*s_x - e_y*s_z + e_z*s_y)/(-e_x + sqrt(2)*e_y*r*cos(\\theta) + e_z - sqrt(2)*r*s_y*cos(\\theta) + s_x - s_z)"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y0"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"$\\displaystyle \\frac{- sx - sz}{ex + ez - sx - sz}$"
],
"text/plain": [
"(-sx - sz)/(ex + ez - sx - sz)"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t1 = sp.solve(sp.Eq(x, z), t)[0]\n",
"t1"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" -ex⋅sz + ez⋅sx \n",
"─────────────────\n",
"ex + ez - sx - sz\n",
"\n",
"ex⋅sy - ey⋅sx - ey⋅sz + ez⋅sy\n",
"─────────────────────────────\n",
" ex + ez - sx - sz \n",
"\n",
" ex⋅sz - ez⋅sx \n",
"─────────────────\n",
"ex + ez - sx - sz\n"
]
}
],
"source": [
"x1 = sp.simplify(sx + t1 * dx)\n",
"y1 = sp.simplify(sy + t1 * dy)\n",
"z1 = sp.simplify(sz + t1 * dz)\n",
"\n",
"sp.pretty_print(x1)\n",
"print()\n",
"sp.pretty_print(y1)\n",
"print()\n",
"sp.pretty_print(z1)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.7"
}
},
"nbformat": 4,
"nbformat_minor": 2
}