public static class JMEMath.Geometria
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static class |
JMEMath.Geometria.Punto2D |
static class |
JMEMath.Geometria.Punto3D |
Constructor and Description |
---|
Geometria() |
Modifier and Type | Method and Description |
---|---|
static double |
alturaTetraedroRegular(double lado)
Altura de un tetraedro regular a partir del lado
|
static double |
alturaTrianguloEquilatero(double lado)
Altura de un triángulo equilátero
|
static double[] |
alturaTrianguloIsosceles(double a,
double b)
Altura de un triángulo isósceles
|
static double[] |
alturaTrianguloLadosHeron(double a,
double b,
double c)
Alturas de un triángulo a partir de los lados
Formula de Herón |
static double |
apotema(long n,
double lado)
Apotema de un polígono regular
|
static double |
areaCilindro(double r,
double h,
boolean bases)
Área de un cilindro recto de base circular
|
static double |
areaCirculo(double radio)
Área de un círculo según su radio π·r2
|
static double |
areaCono(double r,
double h,
boolean base)
Área de un cono
|
static double |
areaElipse(double a,
double b)
Área de la elipse
|
static double |
areaElipsoide(double a,
double b,
double c)
Área de un elipsoide (y esferoide y esfera)
|
static double |
areaEsfera(double radio)
Área de la esfera
|
static double |
areaPoligonoRegularNApotema(long n,
double apotema)
Área de un polígono regular según el nº de lados y apotema
|
static double |
areaPoligonoRegularNLado(long n,
double lado)
Área de un polígono regular según el nº de lados y la longitud del lado
|
static double |
areaPoligonoRegularNRadio(long n,
double radio)
Área de un polígono regular según el nº de lados y radio
|
static java.math.BigDecimal |
areaPoligonoRegularPeriApotema(java.math.BigDecimal perimetro,
java.math.BigDecimal apotema)
Área de un polígono regular según el perímetro y la apotema
|
static java.math.BigDecimal |
areaPoligonoVertices(java.math.BigDecimal[][] vertices)
Área de un polígono simple según sus vértices
|
static double |
areaSectorCircular(double radio,
double phi1,
double phi2,
boolean sentido)
Área del sector circular
|
static double |
areaTetraedroRegular(double lado)
Área de un tetraedro regular a partir del lado
|
static java.math.BigDecimal |
areaTrapecioHBases(java.math.BigDecimal a,
java.math.BigDecimal c,
java.math.BigDecimal h)
Área de un trapecio a partir de las dos bases y la altura.
|
static double |
areaTrapecioLados(double a,
double b,
double c,
double d)
Área de un trapecio a partir de los lados
|
static java.math.BigDecimal |
areaTrianguloBaseAltura(java.math.BigDecimal base,
java.math.BigDecimal h)
Área del triángulo a partir de base y altura
|
static double |
areaTrianguloEquilatero(double lado)
Área de un triángulo equilatero
|
static double |
areaTrianguloIsosceles(double a,
double b)
Área de un triángulo isósceles de lados iguales b y base a
|
static double |
areaTrianguloLadosHeron(double a,
double b,
double c)
Área del triángulo a partir de los lados usando la fórmula de Herón
adaptada para mayor estabilidad numérica
Fórmula de Herón.
|
static JMEMath.Geometria.Punto2D |
baricentro(JMEMath.Geometria.Punto2D... puntos)
Baricentro o centroide de una figura poligonal
|
static JMEMath.Geometria.Punto3D |
baricentro(JMEMath.Geometria.Punto3D... puntos)
Baricentro o centroide de una figura tridimensional
|
static JMEMath.Geometria.Punto2D |
circuncentro(JMEMath.Geometria.Punto2D A,
JMEMath.Geometria.Punto2D B,
JMEMath.Geometria.Punto2D C)
Circuncentro de un triángulo
|
static double |
distanciaPlanos(double a1,
double b1,
double c1,
double d1,
double a2,
double b2,
double c2,
double d2,
double EPS)
Distancia entre planos paralelos (secantes-coincidentes -> 0)
|
static double |
distanciaPuntoPlano(JMEMath.Geometria.Punto3D p,
double a,
double b,
double c,
double d)
Distancia de un punto a un plano (usa
hypot ) |
static double |
distanciaPuntoRecta2D(JMEMath.Geometria.Punto2D p,
double a,
double b,
double c)
Distancia de un punto a una recta (usa
hypot ) |
static double |
distanciaPuntoSegmento(JMEMath.Geometria.Punto2D a,
JMEMath.Geometria.Punto2D b,
JMEMath.Geometria.Punto2D c)
|
static double |
distanciaRectas(double a1,
double b1,
double c1,
double a2,
double b2,
double c2,
double EPS)
Distancia entre rectas paralelas (secantes-coincidentes -> 0)
|
static double |
distanciaSegmentoRecta(JMEMath.Geometria.Punto2D p1,
JMEMath.Geometria.Punto2D p2,
double a,
double b,
double c)
Distancia entre segmento y recta
|
static double |
distanciaSegmentos(JMEMath.Geometria.Punto2D p1,
JMEMath.Geometria.Punto2D p2,
JMEMath.Geometria.Punto2D q1,
JMEMath.Geometria.Punto2D q2,
double EPS)
Distancia entre segmentos
|
static double[] |
ecuacionPlanoGeneral(JMEMath.Geometria.Punto3D p1,
JMEMath.Geometria.Punto3D p2,
JMEMath.Geometria.Punto3D p3,
boolean normalizar)
Ecuación general del plano
p a partir de tres puntos no alineados de él |
static double[] |
ecuacionRectaGeneral(JMEMath.Geometria.Punto2D p,
JMEMath.Geometria.Punto2D q,
boolean normalizar)
Ecuación general de la recta
r a partir de dos puntos distintos de ella |
static double |
excentricidadElipse(double a,
double b)
Obtiene la excentridad de la elipse ε=c/a
|
static JMEMath.Geometria.Punto2D |
incentro(JMEMath.Geometria.Punto2D A,
JMEMath.Geometria.Punto2D B,
JMEMath.Geometria.Punto2D C)
Incentro de un triángulo
|
static JMEMath.Geometria.Punto2D[] |
interseccionCircunferenciaCircunferencia(JMEMath.Geometria.Punto2D c1,
double r1,
JMEMath.Geometria.Punto2D c2,
double r2,
double EPS)
Intersección entre circunferencias
|
static JMEMath.Geometria.Punto2D[] |
interseccionRectaGeneralCircunferencia(JMEMath.Geometria.Punto2D centro,
double r,
double a,
double b,
double c,
double EPS)
Intersección entre recta 2D en forma general
Ax+By+C=0 y circunferencia a partir
de centro y radio
https://cp-algorithms.com/geometry/circle-line-intersection.html |
static JMEMath.Geometria.Punto3D |
interseccionRectaPlano(double a1,
double b1,
double c1,
double d1,
double a2,
double b2,
double c2,
double d2,
double a3,
double b3,
double c3,
double d3,
double EPS)
Punto de intersección entre recta en forma general (dos planos) y plano.
|
static JMEMath.Geometria.Punto2D |
interseccionRectasGeneral(double a1,
double b1,
double c1,
double a2,
double b2,
double c2,
double EPS)
Intersección entre rectas 2D en forma general
Ax+By+C=0 |
static JMEMath.Geometria.Punto2D[] |
interseccionSegmentos(JMEMath.Geometria.Punto2D p1,
JMEMath.Geometria.Punto2D p2,
JMEMath.Geometria.Punto2D q1,
JMEMath.Geometria.Punto2D q2,
double EPS)
Punto o segmento de intersección entre dos segmentos
|
static JMEMath.Geometria.Punto2D |
ortocentro(JMEMath.Geometria.Punto2D A,
JMEMath.Geometria.Punto2D B,
JMEMath.Geometria.Punto2D C)
Ortocentro de un triángulo
|
static double |
periArcoCircular(double radio,
double phi1,
double phi2,
boolean sentido)
Perímetro de arco circular
|
static double |
periCircunferencia(double radio)
Perímetro de una circunferencia 2π·r
|
static double |
periElipse(double a,
double b)
Perímetro de la elipse mediante el uso de integrales
elípticas de segunda especie
|
static double |
periElipse(double a,
double b,
double phi1,
double phi2,
boolean sentido)
Perímetro de un arco de elipse entre dos ángulos dados
|
static double |
periElipseRamanujanAprox(double a,
double b)
Aproximación de Ramanujan del perímetro de la elipse.
|
static double |
periPoligono(JMEMath.Geometria.Punto2D[] vertices)
Longitud de un polígono o polilínea.
|
static double |
posicionRelativaPuntoPlano(JMEMath.Geometria.Punto3D p,
double a,
double b,
double c,
double d)
Posición relativa de un punto respecto de a un plano
|
static double |
posicionRelativaPuntoRecta2D(JMEMath.Geometria.Punto2D p,
double a,
double b,
double c)
Posición relativa de un punto respecto de la recta
|
static double |
semidistanciaFocalElipse(double a,
double b)
Obtiene la semidistancia focal c=[OF|OF'] a partir de los semiejes
|
static double |
toroide(double r,
double pfigura)
Área/Volumen de un toroide a partir del perímetro/área de la figura generatriz
|
static double |
volumenCilindro(double a,
double b,
double h)
Volumen de un cilindro recto u oblicuo de base elíptica o circular
|
static double |
volumenCono(double a,
double b,
double h)
Volumen de un cono recto u oblicuo de base elíptica o circular
|
static double |
volumenElipsoide(double a,
double b,
double c)
Volumen de elipsoide, esferoide y esfera
|
static double |
volumenTetraedroRegular(double lado)
Volumen de un tetraedro regular a partir del lado
|
public static double[] ecuacionRectaGeneral(JMEMath.Geometria.Punto2D p, JMEMath.Geometria.Punto2D q, boolean normalizar)
r
a partir de dos puntos distintos de ellap
- punto en r
q
- punto en r
distinto de p
normalizar
- normalizar según |(A,B)|
[A,B,C] (Ax+By+C=0)
public static double[] ecuacionPlanoGeneral(JMEMath.Geometria.Punto3D p1, JMEMath.Geometria.Punto3D p2, JMEMath.Geometria.Punto3D p3, boolean normalizar)
p
a partir de tres puntos no alineados de élp1
- punto en p
p2
- punto en p
distinto de p1
p3
- punto en p
no alineado con p1
y p2
normalizar
- normalizar según |(A,B,C)|
(vector normal)[A,B,C,D] (Ax+By+Cz+D=0)
public static JMEMath.Geometria.Punto2D interseccionRectasGeneral(double a1, double b1, double c1, double a2, double b2, double c2, double EPS)
Ax+By+C=0
a1
- A1b1
- B1c1
- C1a2
- A2b2
- B2c2
- C2[Infinity,Infinity]
si son paralelaspublic static JMEMath.Geometria.Punto2D[] interseccionSegmentos(JMEMath.Geometria.Punto2D p1, JMEMath.Geometria.Punto2D p2, JMEMath.Geometria.Punto2D q1, JMEMath.Geometria.Punto2D q2, double EPS)
p1
- extremo segmento 1p2
- extremo segmento 1q1
- extremo segmento 2q2
- extremo segmento 2EPS
- tolerancia ≥0public static JMEMath.Geometria.Punto2D[] interseccionRectaGeneralCircunferencia(JMEMath.Geometria.Punto2D centro, double r, double a, double b, double c, double EPS)
Ax+By+C=0
y circunferencia a partir
de centro y radio
https://cp-algorithms.com/geometry/circle-line-intersection.htmlcentro
- centro de la circunferenciar
- radio de la circunferencia (r≥0)a
- Ab
- Bc
- CEPS
- tolerancia[]
public static JMEMath.Geometria.Punto2D[] interseccionCircunferenciaCircunferencia(JMEMath.Geometria.Punto2D c1, double r1, JMEMath.Geometria.Punto2D c2, double r2, double EPS)
c1
- centro de la primera circunferenciar1
- radio de la primera circunferencia (r1≥0)c2
- centro de la segunda circunferenciar2
- radio de la segunda circunferencia (r2≥0)EPS
- tolerancia(NaN,NaN)
public static double distanciaPuntoRecta2D(JMEMath.Geometria.Punto2D p, double a, double b, double c)
hypot
)p
- punto 2Da
- Axb
- Byc
- Cpublic static double posicionRelativaPuntoRecta2D(JMEMath.Geometria.Punto2D p, double a, double b, double c)
p
- puntoa
- Axb
- Byc
- Cpublic static double distanciaPuntoPlano(JMEMath.Geometria.Punto3D p, double a, double b, double c, double d)
hypot
)p
- punto 3Da
- Axb
- Byc
- Czd
- Dpublic static double posicionRelativaPuntoPlano(JMEMath.Geometria.Punto3D p, double a, double b, double c, double d)
p
- puntoa
- Axb
- Byc
- Czd
- Dpublic static JMEMath.Geometria.Punto3D interseccionRectaPlano(double a1, double b1, double c1, double d1, double a2, double b2, double c2, double d2, double a3, double b3, double c3, double d3, double EPS)
a1
- A1xb1
- B1yc1
- C1zd1
- D1a2
- A2xb2
- B2yc2
- C2zd2
- D2a3
- A3xb3
- B3yc3
- C3zd3
- D3EPS
- toleranciapublic static double distanciaPuntoSegmento(JMEMath.Geometria.Punto2D a, JMEMath.Geometria.Punto2D b, JMEMath.Geometria.Punto2D c)
a
- extremo segmentob
- extremo segmentoc
- punto exteriorc-<a,b>
public static double distanciaSegmentos(JMEMath.Geometria.Punto2D p1, JMEMath.Geometria.Punto2D p2, JMEMath.Geometria.Punto2D q1, JMEMath.Geometria.Punto2D q2, double EPS)
p1
- extremo segmento 1p2
- extremo segmento 1q1
- extremo segmento 2q2
- extremo segmento 2<a,b>-<c,d>
public static double distanciaSegmentoRecta(JMEMath.Geometria.Punto2D p1, JMEMath.Geometria.Punto2D p2, double a, double b, double c)
p1
- extremo segmentop2
- extremo segmentoa
- Axb
- Byc
- Cpublic static double distanciaRectas(double a1, double b1, double c1, double a2, double b2, double c2, double EPS)
a1
- Axb1
- Byc1
- Ca2
- A'xb2
- B'yc2
- C'EPS
- toleranciapublic static double distanciaPlanos(double a1, double b1, double c1, double d1, double a2, double b2, double c2, double d2, double EPS)
a1
- Axb1
- Byc1
- Czd1
- Da2
- A'xb2
- B'yc2
- C'zd2
- D'EPS
- toleranciapublic static double apotema(long n, double lado)
n
- nº de lados n>2lado
- longitud del ladolado/(2tan(π/n))
(0 si n≤2)public static JMEMath.Geometria.Punto2D incentro(JMEMath.Geometria.Punto2D A, JMEMath.Geometria.Punto2D B, JMEMath.Geometria.Punto2D C)
A
- vértice AB
- vértice BC
- vértice Cpublic static JMEMath.Geometria.Punto2D circuncentro(JMEMath.Geometria.Punto2D A, JMEMath.Geometria.Punto2D B, JMEMath.Geometria.Punto2D C)
A
- vértice AB
- vértice BC
- vértice Cpublic static JMEMath.Geometria.Punto2D ortocentro(JMEMath.Geometria.Punto2D A, JMEMath.Geometria.Punto2D B, JMEMath.Geometria.Punto2D C)
A
- vértice AB
- vértice BC
- vértice Cpublic static JMEMath.Geometria.Punto2D baricentro(JMEMath.Geometria.Punto2D... puntos) throws JMEInterruptedException
puntos
- vector de puntos con al menos un puntoJMEInterruptedException
- si el hilo se interrumpepublic static JMEMath.Geometria.Punto3D baricentro(JMEMath.Geometria.Punto3D... puntos) throws JMEInterruptedException
puntos
- vector de puntos con al menos un puntoJMEInterruptedException
- si el hilo se interrumpepublic static double alturaTrianguloEquilatero(double lado)
lado
- longitud de los tres ladospublic static double[] alturaTrianguloIsosceles(double a, double b)
a
- baseb
- lados igualespublic static double[] alturaTrianguloLadosHeron(double a, double b, double c)
a
- lado ab
- lado bc
- lado cpublic static java.math.BigDecimal areaTrianguloBaseAltura(java.math.BigDecimal base, java.math.BigDecimal h)
base
- baseh
- alturaareaTrianguloLadosHeron(double, double, double)
public static double areaTrianguloLadosHeron(double a, double b, double c)
a>=b>=c
a
- ladob
- ladoc
- ladoareaTrianguloBaseAltura
public static double areaTrianguloEquilatero(double lado)
lado
- longitud de cualquiera de los 3 ladospublic static double areaTrianguloIsosceles(double a, double b)
a
- baseb
- lados igualespublic static double periPoligono(JMEMath.Geometria.Punto2D[] vertices) throws JMEInterruptedException
vertices
- matriz de vertices como array de puntos 2DJMEInterruptedException
- si el hilo se interrumpepublic static double areaPoligonoRegularNLado(long n, double lado)
n
- nº de lados, n:[3,4,...)
lado
- longitud del ladopublic static java.math.BigDecimal areaPoligonoRegularPeriApotema(java.math.BigDecimal perimetro, java.math.BigDecimal apotema)
perimetro
- suma de los ladosapotema
- distancia del centro al punto medio de cada ladopublic static double areaPoligonoRegularNApotema(long n, double apotema)
n
- nº de lados, n:[3,4,...)
apotema
- a:[0,inf)
public static double areaPoligonoRegularNRadio(long n, double radio)
n
- nº de lados, n:[3,4,...)
radio
- r:[0,inf)
public static java.math.BigDecimal areaPoligonoVertices(java.math.BigDecimal[][] vertices) throws JMEInterruptedException, java.lang.ArrayIndexOutOfBoundsException
vertices
- array de vértices [[px,py],[qx,qy],...]
java.lang.ArrayIndexOutOfBoundsException
- los puntos no está introducidos en la forma
[[px,py],[qx,qy],...]
JMEInterruptedException
- si el hilo se interrumpepublic static java.math.BigDecimal areaTrapecioHBases(java.math.BigDecimal a, java.math.BigDecimal c, java.math.BigDecimal h)
a
- basec
- base opuestah
- alturaA=(a+c)/2·h
public static double areaTrapecioLados(double a, double b, double c, double d)
a
- baseb
- ladoc
- base opuesta (a≠c)d
- ladopublic static double periCircunferencia(double radio)
radio
- r:[0,inf)
public static double areaCirculo(double radio)
radio
- r:[0,inf)
public static double periArcoCircular(double radio, double phi1, double phi2, boolean sentido)
radio
- radio de la circunferenciaphi1
- ángulo inicialphi2
- ángulo finalsentido
- verdadero antihorariopublic static double areaSectorCircular(double radio, double phi1, double phi2, boolean sentido)
radio
- radio del círculophi1
- ángulo inicialphi2
- ángulo finalsentido
- verdadero antihorariopublic static double semidistanciaFocalElipse(double a, double b)
a
- semieje mayorb
- semieje menor b≤apublic static double excentricidadElipse(double a, double b)
a
- semieje mayorb
- semieje menor b≤apublic static double periElipseRamanujanAprox(double a, double b)
a
- semieje mayor (por convenio, son intercambiables)b
- semieje menorperiElipse(double, double)
,
periElipse(double, double, double, double, boolean)
public static double periElipse(double a, double b)
a
- semieje mayorb
- semieje menor b<=a
periElipseRamanujanAprox
,
periElipse(double, double, double, double, boolean)
public static double periElipse(double a, double b, double phi1, double phi2, boolean sentido)
a
- semieje mayorb
- semieje menorphi1
- ángulo inicial [0,360)phi2
- ángulo final [phi1,360)sentido
- true para sentido antihorario de phi1 hacia phi2periElipse
,
periElipseRamanujanAprox
public static double areaElipse(double a, double b)
a
- semiejeb
- semiejepublic static double areaEsfera(double radio)
radio
- radio de la esferapublic static double areaElipsoide(double a, double b, double c)
a
- semiejeb
- semiejec
- semiejepublic static double volumenElipsoide(double a, double b, double c)
a
- semieje xb
- semieje yc
- semieje zpublic static double areaCilindro(double r, double h, boolean bases)
r
- radioh
- alturabases
- incluir basespublic static double volumenCilindro(double a, double b, double h)
a
- semiejeb
- semiejeh
- alturapublic static double areaCono(double r, double h, boolean base)
r
- radio de la baseh
- alturabase
- true para añadir área de la basepublic static double volumenCono(double a, double b, double h)
a
- semiejeb
- semiejeh
- alturapublic static double alturaTetraedroRegular(double lado)
lado
- ladopublic static double areaTetraedroRegular(double lado)
lado
- ladopublic static double volumenTetraedroRegular(double lado)
lado
- ladopublic static double toroide(double r, double pfigura)
r
- radio de revolución (desde el eje de rotación al centro de la
figura)pfigura
- perímetro/área de la figura generatriz