�
7HPD����/LEUHUtDV�JHRPpWULFDV
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
ËQGLFH�GH�OD�VHVLyQ
� &DUDFWHUtVWLFDV�JHQHUDOHV�� (MHPSORV�GH�OLEUHUtDV��&*$/�\�-DYD5*� 2SHUDFLRQHV�EiVLFDV� $OJXQDV�LPSOHPHQWDFLRQHV
�
����&DUDFWHUtVWLFDV�JHQHUDOHV
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
5REXVWH]
� 3HTXHxRV�FDPELRV�HQ�ORV�GDWRV�GH�HQWUDGD�QR�GHEHQ�FDPELDU�XQD�VROXFLyQ�FRUUHFWD
� 6H�GHEHQ�WUDWDU�FRUUHFWDPHQWH�� &DVRV�GHJHQHUDGRV� (UURUHV�PDWHPiWLFRV�FDXVDGRV�SRU�HO�UHGRQGHR
� 6ROXFLRQHV�� $OJRULWPRV�PiV�HODERUDGRV��DULWPpWLFD�UDFLRQDO�H[DFWD
�
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
(ILFLHQFLD� /RV�DOJRULWPRV�GHEHQ�VHU�HILFLHFLHQWHV�\�FRUUHFWRV
� (ILFLHQFLD�� &RPSURPLVR�HQWUH�H[DFWLWXG�\�HILFLHQFLD� 5HSUHVHQWDFLyQ�GH�ORV�GDWRV
� &RUUHFFLyQ�� (VWDEOHFHU�FRQ�SUHFLVLyQ�SDUD�TXp�HQWUDGDV�IXQFLRQD
� &RPSUREDU�FDVRV�GHJHQHUDGRV�\�GDU�PHQVDMH�GH�HUURU
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
)DFLOLGDG�GH�XVR
� (VWUXFWXUD�GH�QRPEUHV�XQLIRUPH� &RQVLVWHQFLD�HQ�HO�WLSR�GH�SDUiPHWURV�\�YDORUHV�GHYXHOWRV�SRU�ODV�IXQFLRQHV
� )DFLOLGDG�HQ�OD�GHSXUDFLyQ�GH�HUURUHV�� 3RVLELOLGDG�GH�GHILQLU�³ZDWFKGRJV´�JHRPpWULFRV�HQ�OD�IDVH�GH�GHSXUDFLyQ
�
����(MHPSORV�GH�OLEUHUtDV
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
&DUiFWHUtVWLFDV�JHQHUDOHV
� 'HVDUUROODGD�SRU�XQ�FRQVRUFLR�HXURSHR� (VFULWD�HQ�&��� 0iV�GH����FODVHV� 85/��KWWS���ZZZ�FV�XX�QO�&*$/
�
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
(VWUXFWXUD�GH�&*$/
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
9HQWDMDV�GH�-DYD
� 3RUWDELOLGDG� 2ULHQWDFLyQ�D�REMHWRV� &ODVHV�HVWiQGDU�SDUD�HQWUDGDV�\�VDOLGDV�JUiILFDV
� 6LQWD[LV�&��&��
�
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
-DYD5*
� 3UR\HFWR�GH�OLEUHUtD�JHRPpWULFD��EDVDGD�HQ�&*$/�\�HQ�-DYD
� /LEUHUtD�GRFHQWH��pQIDVLV�HQ�OD�FRUUHFFLyQ�\�HQ�OD�IDFLOLGDG�GH�XVR�\�QR�HQ�OD�HILFLHQFLD�
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
&ODVHV�EiVLFDV��SDFNDJH -DYD5*�*HRPHWULD�� 6XEFODVHV�GH ObjetoGeometrico �
� Punto2D ��SXQWR�FDUWHVLDQR� Vector2D ��YHFWRU�HQ�HO�HVSDFLR�FDUWHVLDQR� Direccion2D ��YHFWRU�VLQ�PDJQLWXG� Segmento2D ��VHJPHQWR�RULHQWDGR� Recta2D ��UHFWD�RULHQWDGD� Rayo2D��SXQWR�GH�LQLFLR�\�GLUHFFLyQ
� Triangulo2D
�
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
&ODVHV�GH�DSR\R
� GeomException ��PDQHMR�GH�HUURUHV�HQ�-DYD
� Mat ��OLEUHUtD�PDWHPiWLFD�EiVLFD��LQFOX\H�ODV�FRQVWDQWHV�GH�OD�OLEUHUtD
�����2SHUDFLRQHV�EiVLFDV
�
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
*HRP([FHSWLRQ
� 0DQHMR�GH�HUURUHV�JHRPpWULFRV� *HQHUDU�XQD�H[FHSFLyQ�
public void prueba() throws GeomException {...if (error) throw new GeomException(“tipo error”);... }
� 0DQHMDU�OD�H[FHSFLyQ�try { ... prueba(); ...}catch (GeomException e)
{System.out.println(e.getMessage());}
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
0DW
� 2SHUDFLRQHV�PDWHPiWLFDV��JUDGRV�D�UDGLDQHV��UDGLDQHV�D�JUDGRV��HWF�
� &RQVWDQWHV��+RUDULR� $QWLKRUDULR��3RVLWLYR��1HJDWLYR�����
�
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
7RGRV�ORV�REMHWRV�JHRPpWULFRV
� &UHDFLyQ��XWLOL]DU�GLVWLQWRV�RSHUDGRUHV�GH�FUHDFLyQ��D�SDUWLU�GH�WLSRV�SULPLWLYRV�\�GH�RWURV�REMHWRV�JHRPpWULFRV
� &RPSDUDFLyQ��HTXDOV� 2SHUDGRUHV�GH�DFFHVR��SRU�HMHPSOR�
p1.x() SDUD�REWHQHU�OD�FRRUGHQDGD�[�GHO�SXQWR�S�
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
3XQWR�'
� 3XQWR�'�GRXEOH��GRXEOH�� *LUD��GRXEOH���JLUD�DOUHGHGRU�GHO�RULJHQ� *LUD��SXQWR�'��DQJXOR���JLUD�DOUHGHGRU�GH�XQ�SXQWR
� (VFDOD��GRXEOH�� &RPSDUDFLyQ�FRQ�RWUD�SDUHMD�GH�SXQWRV�&ROLQHDOHV��*LUR+RUDULR��*LUR$QWLKRUDULR
� 'LVWDQFLD�DO�FXDGUDGR�D�RWUR�SXQWR
��
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
9HFWRU�'
� &UHDFLyQ��D�SDUWLU�GH�SXQWRV��FRRUGHQDGDV��UHFWDV�����
� 0DJQLWXG� ÈQJXORV�FRQ�ORV�HMHV�[�H�\� 'LUHFFLyQ�'� 2SHUDFLRQHV�FRQ�RWURV�YHFWRUHV��VXPD�SURGXFWR�HVFDODU��PyGXOR�GHO�SURGXFWR�YHFWRULDO��GLUHFFLyQ�GHO�SURGXFWR�YHFWRULDO��iQJXOR�����
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
'LUHFFLRQ�'
� &UHDFLyQ��D�SDUWLU�GH�SXQWRV��YHFWRUHV��UHFWDV�����
� ÈQJXOR� &RPSDUDFLyQ��0D\RU4XH��(TXDOV��0HQRU4XH��,03257$17(��HQ�-DYD5*GHILQLPRV�HO�RUGHQ�D�SDUWLU�GHO�HMH�;�\�HQ�HO�VHQWLGR�FRQWUDULR�D�ODV�DJXMDV�GHO�UHORM�
��
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
6HJPHQWR�'
� &UHDFLyQ��FXDWUR�FRRUGHQDGDV��GRV�SXQWRV������ ,QWHUVHFFLyQ�ERROHDQD FRQ�RWUR�VHJPHQWR��FRQ�XQD�UHFWD��FRQ�XQ�UD\R
� 5HVXOWDGR�GH�OD�LQWHUVHFFLyQ� &RPSUREDFLyQ�GH�VL�FRQWLHQH�D�XQ�SXQWR� &RPSUREDFLyQ�GH�VL�VH�HQFXHQWUD�HQ�OD�SDUWH�GHUHFKD�R�L]TXLHUGD�GH�XQD�UHFWD��RULHQWDGD��FRPR�WRGDV�ODV�UHFWDV�GH�-DYD5*�
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
5D\R�'
� &UHDFLyQ��SXQWR�\�YHFWRU��SXQWR�\�GLUHFFLyQ�����
� ,QWHUVHFFLyQ��FRQ�RWURV 5D\RV�'��FRQ�UHFWDV��FRQ�VHJPHQWRV
��
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
5HFWD�'
� &UHDFLyQ����SXQWRV��SXQWR�\�YHFWRU��SXQWR�\�GLUHFFLyQ
� ,QWHUVHFFLyQ��FRQ�RWUDV�UHFWDV��FRQ�UD\RV��FRQ�VHJPHQWRV�����
� 2ULHQWDFLyQ��SXQWR�D�GHUHFKD��SXQWR�D�L]TXLHUGD��SXQWR�HQFLPD�����
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
7ULDQJXOR�'
� &UHDFLyQ� ÈUHD� 6HQWLGR��KRUDULR� DQWLKRUDULR� &RQWLHQH�SXQWR��FRQWLHQH�SXQWR�GH�IRUPD�HVWULFWD
��
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
(MHPSORimport javaRG.*;import javaRG.Geometria.*;
public class Ejemplo1 {public static void main (String [] args) {
Punto2D p1,p2;Vector2D v1,v2;
p1 = new Punto2D (1.0, -1.0);p2 = new Punto2D (4, 3);v1 = new Vector2D (-1, 10);v2 = new Vector2D (p1, p2); v1.suma (v2);v1.escala (2.0);p2.suma (v1);System.out.println ("Coordenadas del vector 2: "
+ v2.x() + "," + v2.y());System.out.println ("Coordenadas del punto 2: "
+ p2.x() + "," + p2.y());}
}
����$OJXQDV�LPSOHPHQWDFLRQHV
��
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
,QWHUVHFFLyQ�GH�UHFWDV����
� (FXDFLyQ�SDUDPpWULFD�
VLHQGR�����HO�YHFWRU�GHILQLGR�SRU�XQ�SXQWR�GH�OD�UHFWD�\����HO�YHFWRU�GLUHFWRU�GH�OD�PLVPD�
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
,QWHUVHFFLyQ�GH�UHFWDV����
� ,PSOtFLWD��HTXLYDOHQWH�D�OD�HFXDFLyQ�SDUDPpWULFD
ax + by + c = 0
� 3HQGLHQWH��SUREOHPDV�FRQ�OtQHDV�YHUWLFDOHV
y = mx + b
��
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
,QWHUVHFFLyQ�GH�UHFWDV����
a1x + b1y + c1 = 0a2x + b2y + c2 = 0
� 'HEH�UHVROYHUVH�HO�VLVWHPD�GH�HFXDFLRQHV
� 6L�HO�VLVWHPD�WLHQH�XQD�~QLFD�VROXFLyQ��HO�UHVXOWDGR�GH�OD�LQWHUVHFFLyQ�HV�XQ�SXQWR
� ,QILQLWDV�VROXFLRQHV��O��\�O��VRQ�OD�PLVPD�UHFWD� 6LQ�VROXFLyQ��O��\�O��VRQ�SDUDOHODV
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
,QWHUVHFFLyQ�GH�UHFWDV����
� 'RV�UHFWDV�SXHGHQ�QR�LQWHUVHFWDUVH��LQWHUVHFWDU�HQ�XQ�SXQWR�R�FRLQFLGLU
Recta2D r1, r2, rectaResult;ObjetoGeometrico result;Punto2D puntoResult;
result = r1.intersecta(r2);if (result instanceof Punto2D)
puntoResult = (Punto2D) result;else if (result instanceof Recta2D)
resultResult = (Recta2D) result;else if (result == null)
// l1 y l2 son paralelas
��
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
&yGLJR�5HFWD�'�LQWHUVHFFLRQ6HJPHQWR��
public ObjetoGeometrico interseccionSegmento(Segmento2D otro) {ObjetoGeometrico result =
this.interseccionRecta(new Recta2D(otro));if (result instanceof Recta2D) return otro;
else if (result instanceof Punto2D)if (otro.contienePunto((Punto2D) result))
return result;else return null;
else return result;}
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
ÈUHD�GH�XQ 7ULDQJXOR�' ���
� 3RGHPRV�FDOFXODU�HO�iUHD��FRQ�VLJQR��GHO�WULiQJXOR�D�SDUWLU�GHO�SURGXFWR�YHFWRULDO�GH�ORV�YHFWRUHV�����\�
ab
c
��
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
&yGLJR�7ULDQJXOR�DUHD��
public int sentido() throws GeomException { double areaConSigno = area()if (Mat.absoluto(areaConSigno) < Mat.EPSILON)
return Mat.COLINEAL;else if (areaConSigno > 0)
return Mat.ANTIHORARIO;else return Mat.HORARIO;
}
public double area() throws GeomException {Vector2D v1 = new Vector2D(p[0], p[1]);Vector2D v2 = new Vector2D(p[0], p[2]);return v1.moduloProductoVectorial(v2);
}
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
3XQWR�FRQWHQLGR�HQ�WULDQJXOR
� 8Q�SXQWR�S�HVWi�FRQWHQLGR�HQ�XQ�WULiQJXOR�FXDQGR�HVWi�D�OD�L]TXLHUGD�GH�WRGRV�VXV�ODGRV�VL�HO�WULiQJXOR�HVDQWLKRUDULR �\�D�OD�LQYHUVD�
p
��
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
&yGLJR�7ULDQJXOR�'�FRQWLHQH3XQWR��
public boolean contienePunto(Punto2D punto) throwsGeomException{
Segmento2D lado1 = new Segmento2D(p[0], p[1]);Segmento2D lado2 = new Segmento2D(p[1], p[2]);Segmento2D lado3 = new Segmento2D(p[2], p[0]);
if ( lado1.contienePunto(punto) ||lado2.contienePunto(punto) ||lado3.contienePunto(punto)) return true;
else return contienePuntoEstrictamente(punto);}
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
&yGLJR�7ULDQJXOR�FRQWLHQH3XQWR(VWULFWDPHQWH��
public boolean contienePuntoEstrictamente(Punto2D punto)throws GeomException {
if (punto.equals(p[0]) || punto.equals(p[1]) || punto.equals(p[2])) return false;
else {int giro = sentido(); if (punto.posicionRelativa(p[0], p[1]) == giro &&
punto.posicionRelativa(p[1], p[2]) == giro &&punto.posicionRelativa(p[2], p[0]) == giro)
return true;else return false;}
}
��
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
6HQWLGR�GH�JLUR�GH���SXQWRV
� (O�FiOFXOR�GHO�VLJQR�GHO�iUHD�GHO�WULiQJXOR��D�E�F��VH�DSOLFD�FRQ�IDFLOLGDG�D�GHWHUPLQDU�VL�F�VH�HQFXHQWUD�D�OD�GFKD��R�L]TGD��GHO�VHJPHQWR�RULHQWDGR��D�E��
a
bc
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
&yGLJR�3XQWR�'�SRVLFLRQ5HODWLYD��
public int posicionRelativa(Punto2D p1, Punto2D p2) throws GeomException {
int sentido = Mat.COLINEAL;if (p1.equals(p2))
throw new GeomException("posicionRelativa (Punto2D, Punto2D): Los puntos con los que comparar son iguales");
else sentido = new Triangulo2D(p1, p2, this).sentido();return sentido;
}
��
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
,QWHUVHFFLyQ�ERROHDQD GH�VHJPHQWRV
� 'RV�VHJPHQWRV�LQWHUHVHFWDUiQGHSHQGLHQGR�GH�OD�RULHQWDFLyQ�UHODWLYD�GH�ORV�SXQWRV�RULJHQ�\�ILQDO�GH�XQR�\�RWUR
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
,QWHUVHFFLyQ�SURSLD�GH���VHJPHQWRV
%RRO�,QWHUVHFWD3URS �3XQWR�D��E��F��G�6L � &ROLQHDO�D�E�F��R�&ROLQHDO�D�E�G��y�
&ROLQHDO�F�G�D��R &ROLQHDO�F�G�E��GHYROYHU )$/6(�
VLQR GHYROYHU �;RU�,]TXLHUGD�D�E�F��,]TXLHUGD�D�E�G��;RU�,]TXLHUGD�F�G�D��,]TXLHUGD�F�G�E���
��
© Domingo Gallardo (DCCIA, Universidad de Alicante, 2001)
,QWHUVFFLyQ�ERROHQD��FRQ�FDVRV�HVSHFLDOHV�
%RRO�,QWHUVHFWD �3XQWR�D��E��F��G�VL��,QWHUVHFWD3URS�D�E�F�G�
GHYROYHU�758(VLQR�VL���(QWUH�D�E�F��__�(QWUH�D�E�G��__�(QWUH�F�G�D��__�
(QWUH�F�G�E��GHYROYHU�758(
VLQR�GHYROYHU�)$/6(