Package: algepy
algepyEnglish readme version, click to spand.What is Algepy?Algepy is a Python Package that allows you to manipulate vectors, points and planes. It can be useful to calculate or verify the results of your operations.This project is still under development and is not fully developed, it may have some bugs or failures.InstallationVectorBasic operationsOppositeMagnitudeDirection CosineAngle between two vectorsDot productPerpendicularProyectionCross productTriple productPointBasic operationsMidpointFind the vector between two pointsPlaneGeneral equationSymmetric equationPlotVectorPointPlaneContributionsInstallationUsingPython Package Index (PyPI)pipinstallalgepyManuallygitclonehttps://github.com/manucabral/algepy.gitcdalgepyVectorTo create a vector you simply need to instantiate the Vector class with its components (x, y, z)By default it will have 3 dimensions but you can specify the dimension as in the following example.fromalgepyimportVectorv=Vector(x=1,y=1,z=1)u=Vector(x=1,y=1,z=1,dimension=2)Basic operationsTo add and subtract you just have to use the + and - operator, both operations returns a vector.>>>fromalgepyimportVector>>>u=Vector(x=1,y=2,z=3)>>>v=Vector(x=0,y=2,z=5)>>>u+v(1,4,8)>>>u-v(1,0,-2)OppositeTo get the opposite of a vector you have to use itsoppositemethod, this method returns a new vector.>>>fromalgepyimportVector>>>u=Vector(x=1,y=2,z=3)>>>u.opposite()(-1,-2,-3)MagnitudeTo get magnitude of the vector, you have to usemagnitudemethod, this method returns a decimal number.>>>fromalgepyimportVector>>>u=Vector(x=1,y=2,z=3)>>>u.magnitude()3.7416573867739413Direction CosineTo get the direction angles of a vector you have to use thedirection_cosinemethod, this method requires that you specify the axis (x, z, y).The method returns radians by default but you can change it to degrees using thedegreesparameter, the same applies with thedecimalsparameter.>>>fromalgepyimportVector>>>a=Vector(x=2,y=0,z=-2)>>>a.direction_cosine(axis='x',degrees=True)45.0>>>a.direction_cosine(axis='y',degrees=True)90.0>>>a.direction_cosine(axis='z',degrees=True)135.0Angle between two vectorsTo get the angle between two vectors, use the commutative methodangle.The method returns radians by default but you can change it to degrees using thedegreesparameter, the same applies with thedecimalsparameter.>>>fromalgepyimportVector>>>u=Vector(x=1,y=1,z=3)>>>v=Vector(x=-1,y=0,z=4)>>>u.angle(v,degrees=True,decimals=3)36.448>>>u.angle(v)# resultado en radianes0.6361Dot productTo get the dot product between two vectors, use the * operator (do not confuse this operator with the cross product), this operation returns a scalar number.>>>fromalgepyimportVector>>>u=Vector(x=-3,y=5,z=8)>>>v=Vector(x=1,y=1,z=1)>>>u*v10PerpendicularTo know if a vector is perpendicular to another you have to use theperpendicularmethod, this method returns a boolean value (True or False)>>>fromalgepyimportVector>>>u=Vector(x=1,y=1,z=3)>>>v=Vector(x=-1,y=0,z=4)>>>u.perpendicular(v)FalseProyectionTo get the projection of one vector in the direction of another you have to use theprojectionmethod, this method returns a list with two vectors.w:main vector (u) projected on another vector (v)n:other vector (v) projected on main vector (u)The main vector is the vector to which we apply theprojectionmethod.>>>fromalgepyimportVector>>>u=Vector(x=1,y=2,z=1)>>>v=Vector(x=0,y=1,z=-1)>>>w,n=u.proyection(v)>>>w(0.0,0.4999999999999999,-0.4999999999999999)# u on v>>>n(1.0,1.5,1.5)# v on uCross productTo get the cross product between two vectors, you must use thecrossmethod, this returns the vector resulting from the cross product.Bear in mind that the vector product is not commutative, since if we change the order of the vectors, the direction and the magnitude of the vector product are preserved, but the sense is reversed.>>>fromalgepyimportVector>>>a=Vector(x=1,y=2,z=3)>>>b=Vector(x=0,y=2,z=5)>>>v=a.cross(b)>>>v(4,-5,2)# cross product>>>v.perpendicular(a),v.perpendicular(b)True,TrueTriple productTo get the triple product you have to use thetriplemethod, this returns a number and isn't commutative.Definedu,vandwWhen using the method onu.triple(v,w) the cross product betweenvandwwill be applied and then the dot product betweenu(vxw)>>>fromalgepyimportVector>>>u=Vector(x=1,y=2,z=3)>>>v=Vector(x=0,y=2,z=5)>>>w=Vector(x=0,y=0,z=2)>>>u.triple(v,w)4>>>u*v.cross(w)# equivalentPointTo create a point you simply need to instantiate the Point class with its (x,y,z) components.You can only use 3-dimensional points.fromalgepyimportPoint>>>R=Point(x=1,y=1,z=4)>>>S=Point(x=3,y=0,z=2)Basic operationsTo add and subtract you just have to use the + and - operator, both operations return a point.MidpointTo get the midpoint between two points, use themidpointmethod, it returns a vector with the components of the midpoint.fromalgepyimportPoint>>>r=Point(x=1,y=2,z=3)>>>s=Point(x=3,y=-1,z=2)>>>r.midpoint(s)(2.0,0.5,2.5)Find the vector between two pointsTo get a vector from two points you have to use thefind_vectormethod, this returns a vector formed from the two points.fromalgepyimportPoint>>>r=Point(x=1,y=1,z=4)>>>s=Point(x=3,y=0,z=2)>>>r.find_vector(s)(2,-1,-2)PlaneTo create a plane we need the normal vector (vector perpendicular to the plane) and some point that belongs to the plane.>>>fromalgepyimportVector,Point,Plane>>>n=Vector(x=2,y=-3,z=1)>>>p=Point(x=1,y=3,z=1)>>>plane=Plane(normal=n,point=p)>>>planeπ:2x-3y1z6=0If we do not pass the normal vector and the default point so these will be null vectors, we can also manually assign the components of the plane by accessing the properties a, b, c and d.>>>fromalgepyimportVector,Point,Plane>>>plane=Plane()>>>planeπ:0x0y0z0=0>>>plane.a=5π:5x0y0z0=0General equationTo get the implicit or general equation of the plane, we simply access the plane object created previously.>>>planeπ:2x-3y1z6=0Symmetric equationTo get the segmental equation of the plane we must use thesymmetric_equationmethod, for this we need at least to have defined the components of the plane (a, b, c and d).We can indicate to the method if we want the result as a fraction or by decimals through thefractionparameter>>>fromalgepyimportVector,Point,Plane>>>n=Vector(x=2,y=-3,z=1)>>>plane=Plane(normal=n)>>>plane.d=6>>>plane.symmetric_equation(fraction=True)2x/-6-3y/-61z/-6=1>>>plane.symmetric_equation(decimals=3)x/0.333y/-0.5z/0.167=1PlotAlgepy uses pyplot from matplotlib so for this module to work, you need to have this package installed.For now the plot only supports 3 dimensions, you can try others dimensions but you will have errors.plot=Plot(name='Example',projection='3d')plot.show()Plot a vectorTo add a vector to our plot we need to use theadd_vectormethod and also have an origin point for the vector.Once this is done we can show the graph with theshowmethod.fromalgepyimportVector,Point,Plotorigin=Point(x=0,y=0,z=0)a=Vector(x=1,y=2,z=3)plot=Plot(name='Vector',projection='3d')plot.add_vector(origin=origin,vector=a)plot.show()Plot a pointTo add a point to our plot we need to use theadd_pointmethod.Once this is done we can show the graph with theshowmethod.fromalgepyimportPoint,Plotp=Point(x=1,y=2,z=3)plot=Plot(name='Point',projection='3d')plot.add_point(point=p,color='red')plot.show()Plot a planeTo add a plane to our plot we need to use theadd_planemethod.Once this is done we can show the graph with theshowmethod.fromalgepyimportVector,Point,Planen=Vector(x=2,y=-3,z=1)p=Point(x=1,y=3,z=1)plane=Plane(normal=n,point=p)plot=Plot(projection='3d',range=[-5,5])plot.add_plane(plane=plane,color='red')plot.show()ContributionsAll contributions, reports or bug fixes and ideas are welcome. You can go to the issues section and provide your help.Versión español, click para expander.¿Qué es algepy?Algepy es una libreria de python que te permite manipular vectores de hasta 3 dimensiones, te puede ser útil para calcular o verificar los resultados de tus operaciones.Este proyecto todavía se encuentra en desarrollo y no está completamente desarrollado, puede tener algunos bugs o fallos.InstalaciónVectorOperaciones básicasOpuestoMódulo o normaÁngulos directoresÁngulo entre dos vectoresProducto escalarPerpendicularidadProyección de vectoresProducto vectorialProducto mixtoPuntoOperaciones básicasPunto medioVector a partir de dos puntosPlanoEcuación generalEcuación segmentariaGráficoVectorPuntoPlanoContribucionesInstalaciónUtilizandoPython Package Index (PyPI)pipinstallalgepyManualmentegitclonehttps://github.com/manucabral/algepy.gitcdalgepyVectorPara definir un vector simplemente necesitas instanciar la clase Vector con sus componentes (x, y, z)Por defecto tendrá 3 dimensiones pero puedes especificarle la dimensión como en el siguiente ejemplo.fromalgepyimportVectorv=Vector(x=1,y=1,z=1)u=Vector(x=1,y=1,z=1,dimension=2)# ignorará el eje zOperaciones básicaPara sumar y restar solamente tienes que utilizar el operador + y -, las dos operaciones devuelve un vector.>>>fromalgepyimportVector>>>u=Vector(x=1,y=2,z=3)>>>v=Vector(x=0,y=2,z=5)>>>u+v(1,4,8)>>>u-v(1,0,-2)OpuestoPara obtener el opuesto de un vector hay que utilizar su métodoopposite, este método devuelve un nuevo vector.>>>fromalgepyimportVector>>>u=Vector(x=1,y=2,z=3)>>>u.opposite()(-1,-2,-3)Módulo o normaPara obtener el módulo o la norma del vector hay que utilizar su métodomagnitude, este método devuelve un número decimal.>>>fromalgepyimportVector>>>u=Vector(x=1,y=2,z=3)>>>u.magnitude()3.7416573867739413Ángulos directoresPara obtener los ángulos directores de un vector hay que utilizar el métododirection_cosine, este método requiere que le especifiques el eje obligatoriamente (x, z,  y).El método devuelve por defecto en radianes pero lo puedes cambiar a grados mediante el parámetrodegrees, aplica lo mismo con el parámetrodecimals.>>>fromalgepyimportVector>>>a=Vector(x=2,y=0,z=-2)>>>a.direction_cosine(axis='x',degrees=True)# ángulo director respecto al eje x45.0>>>a.direction_cosine(axis='y',degrees=True)# ángulo director respecto al eje y90.0>>>a.direction_cosine(axis='z',degrees=True)# ángulo director respecto al eje z135.0Ángulo entre dos vectoresPara obtener el ángulo que se forma entre dos vectores hay que utilizar el método conmutativoangle.El método devuelve por defecto en radianes pero lo puedes cambiar a grados mediante el parámetrodegrees, aplica lo mismo con el parámetrodecimals.>>>fromalgepyimportVector>>>u=Vector(x=1,y=1,z=3)>>>v=Vector(x=-1,y=0,z=4)>>>u.angle(v,degrees=True,decimals=3)# resultado en grados con 3 decimales36.448>>>u.angle(v)# resultado en radianes0.6361Producto escalarPara obtener el producto escalar entre dos vectores hay que utilizar el operador * (no confundir este operador con el producto vectorial) esta operación devuelve un número escalar.>>>fromalgepyimportVector>>>u=Vector(x=-3,y=5,z=8)>>>v=Vector(x=1,y=1,z=1)>>>u*v10PerpendicularidadPara saber si un vector es perpendicular a otro hay que utilizar el métodoperpendicular, este método devuelve un valor booleano (True o False)>>>fromalgepyimportVector>>>u=Vector(x=1,y=1,z=3)>>>v=Vector(x=-1,y=0,z=4)>>>u.perpendicular(v)FalseProyección de vectoresPara obtener la proyección de un vector en la dirección de otro hay que utilizar el métodoprojection, este método devuelve una lista con dos vectores.w:vector principal (u) proyectado en otro vector (v)n:otro vector (v) proyectado en el vector principal (u)El vector principal es el vector al que le aplicamos el métodoprojection.>>>fromalgepyimportVector>>>u=Vector(x=1,y=2,z=1)>>>v=Vector(x=0,y=1,z=-1)>>>w,n=u.proyection(v)>>>w(0.0,0.4999999999999999,-0.4999999999999999)# vector u proyectado en v>>>n(1.0,1.5,1.5)# vector v proyectado en uProducto vectorialPara obtener el producto vectorial entre dos vectores hay que utilizar el métodocross, este método devuelve el vector resultado del producto vectorial.Tener en cuenta que el producto vectorial no es conmutativo, ya que si cambiamos el orden de los vectores se conservan la dirección y el módulo del producto vectorial pero se invierte el sentido.>>>fromalgepyimportVector>>>a=Vector(x=1,y=2,z=3)>>>b=Vector(x=0,y=2,z=5)>>>v=a.cross(b)>>>v(4,-5,2)# producto vectorial>>>v.perpendicular(a),v.perpendicular(b)True,TrueProducto mixtoPara obtener el producto mixto hay que utilizar el métodotriple, este método devuelve un escalar y no es conmutativo así que hay que tener en cuenta lo siguiente.Definidosu,vywCuando se utiliza el método enu.triple(v,w) se aplicará primero el producto vectorial entrevywpara después calcular el producto escalaru(vxw)>>>fromalgepyimportVector>>>u=Vector(x=1,y=2,z=3)>>>v=Vector(x=0,y=2,z=5)>>>w=Vector(x=0,y=0,z=2)>>>u.triple(v,w)4>>>u*v.cross(w)# equivalentePuntoPara definir un punto simplemente necesitas instanciar la clase Point con sus componentes (x, y, z).Por ahora solamente puedes utilizar puntos de 3 dimensiones.fromalgepyimportPoint>>>R=Point(x=1,y=1,z=4)>>>S=Point(x=3,y=0,z=2)Operaciones básicasPara sumar y restar solamente tienes que utilizar el operador + y -, las dos operaciones devuelve un punto.Punto medioPara obtener el punto medio entre dos puntos hay que utilizar el métodomidpoint, este devuelve un vector con los componentes del punto medio.fromalgepyimportPoint>>>r=Point(x=1,y=2,z=3)>>>s=Point(x=3,y=-1,z=2)>>>r.midpoint(s)(2.0,0.5,2.5)Vector a partir de dos puntosPara obtener un vector a partir de dos puntos hay que utilizar el métodofind_vector, este devuelve un vector formado a partir de los dos puntos.>>>fromalgepyimportPoint>>>r=Point(x=1,y=1,z=4)>>>s=Point(x=3,y=0,z=2)>>>r.find_vector(s)(2,-1,-2)PlanoPara crear un plano necesitamos el vector normal (vector perpendicular al plano) y algún punto que pertenezca al plano.>>>fromalgepyimportVector,Point,Plane>>>n=Vector(x=2,y=-3,z=1)>>>p=Point(x=1,y=3,z=1)>>>plano=Plane(normal=n,point=p)>>>planoπ:2x-3y1z6=0Si no le pasamos el vector normal y el punto por defecto estos serán vectores nulos, también podemos asignarle manualmente los componentes del plano accediendo a las propiedades a, b, c y d.>>>fromalgepyimportVector,Point,Plane>>>plano=Plane()>>>planoπ:0x0y0z0=0>>>plano.a=5π:5x0y0z0=0Ecuación generalPara obtener la ecucación implícita o general del plano simplemente accedemos al objeto plano creado anteriormente.>>>planoπ:2x-3y1z6=0Ecuación segmentariaPara obtener la ecucación segmentaria del plano hay que utilizar el métodosymmetric_equation, para esto necesitamos al menos tener definido los componentes del plano (a, b, c y d).Al método le podemos indicar si el resultado lo queremos como fracción o por decimales mediante el parámetrofraction>>>fromalgepyimportVector,Point,Plane>>>n=Vector(x=2,y=-3,z=1)>>>plano=Plane(normal=n)>>>plano.d=6>>>plano.symmetric_equation(fraction=True)2x/-6-3y/-61z/-6=1>>>plano.symmetric_equation(decimals=3)x/0.333y/-0.5z/0.167=1GráficoAlgepy utiliza pyplot de matplotlib así que para que este módulo te funcione necesitas tener instalado este paquete.Por ahora el gráfico solamente soporta 3 dimensiones, puedes intentar con otras pero corres el riesgo de obtener varios errores.grafico=Plot(name='Ejemplo',projection='3d')grafico.show()Gráfico de un vectorPara agregar un vector a nuestro gráfico necesitamos utilizar el métodoadd_vectory además tener un punto de origen para el vector.Una vez realizado esto podemos mostrar el gráfico con el métodoshowfromalgepyimportVector,Point,Plotorigen=Point(x=0,y=0,z=0)a=Vector(x=1,y=2,z=3)grafico=Plot(name='Vector',projection='3d')grafico.add_vector(origin=origen,vector=a)grafico.show()Gráfico de un puntoPara agregar un punto a nuestro gráfico necesitamos utilizar el métodoadd_pointUna vez realizado esto podemos mostrar el gráfico con el métodoshowfromalgepyimportPoint,Plotp=Point(x=1,y=2,z=3)grafico=Plot(name='Punto',projection='3d')grafico.add_point(point=p,color='red')grafico.show()Gráfico de un planoPara agregar un plano a nuestro gráfico necesitamos utilizar el métodoadd_planeUna vez realizado esto podemos mostrar el gráfico con el métodoshowfromalgepyimportVector,Point,Planen=Vector(x=2,y=-3,z=1)p=Point(x=1,y=3,z=1)plano=Plane(normal=n,point=p)grafico=Plot(projection='3d',range=[-5,5])grafico.add_plane(plane=plano,color='red')grafico.show()ContribuciónTodas las contribuciones, reportes o arreglos de bugs e ideas es bienvenido. Para esto puedes dirigirte al apartado de issues y aportar tu ayuda.