{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "689613d2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "80.58750000000002\n", "(array([8.97705408, 4.95 , 0. ]), array([-8.97705408, 4.95 , 0. ]))\n" ] } ], "source": [ "import numpy \n", "from math import sqrt as square\n", "from numpy import sqrt, dot, cross \n", "from numpy.linalg import norm \n", "\n", "#rssi = [rssi, max_rssi, min_rssi, gamma]\n", "\n", "def dist(rssi):\n", " rssi = list(map(float, rssi))\n", " return square(abs(rssi[0]-rssi[1]))*rssi[3]/square(abs(rssi[0]-rssi[2]))\n", "\n", "def sol(x1,x2,x3,rssi1,rssi2,rssi3):\n", " r1 = dist(rssi1)\n", " r2 = dist(rssi2)\n", " r3 = dist(rssi3)\n", " x1=numpy.array(x1)\n", " x2=numpy.array(x2)\n", " x3=numpy.array(x3)\n", " temp1 = x2-x1 \n", " e_x = temp1/norm(temp1) \n", " temp2 = x3-x1 \n", " i = dot(e_x,temp2) \n", " temp3 = temp2 - i*e_x \n", " e_y = temp3/norm(temp3) \n", " e_z = cross(e_x,e_y) \n", " d = norm(x2-x1) \n", " j = dot(e_y,temp2) \n", " x = (r1*r1 - r2*r2 + d*d) / (2*d) \n", " y = (r1*r1 - r3*r3 -2*i*x + i*i + j*j) / (2*j) \n", " temp4 = r1*r1 - x*x - y*y \n", " print(temp4)\n", " if temp4<0: \n", " return \"Нет пересечения!\"\n", " z = sqrt(temp4) \n", " p_12_a = x1 + x*e_x + y*e_y + z*e_z \n", " p_12_b = x1 + x*e_x + y*e_y - z*e_z \n", " return p_12_a,p_12_b\n", "\n", "\n", "print(sol([0,0,1],[0,0,-1],[0,10,0],[50,100,0,10.3],[50,100,0,10.3],[50,100,0,10.3]))" ] }, { "cell_type": "code", "execution_count": null, "id": "0a68f35a", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.11.6" } }, "nbformat": 4, "nbformat_minor": 5 }