001: /*
002: * This file is part of the GeOxygene project source files.
003: *
004: * GeOxygene aims at providing an open framework which implements OGC/ISO specifications for
005: * the development and deployment of geographic (GIS) applications. It is a open source
006: * contribution of the COGIT laboratory at the Institut Géographique National (the French
007: * National Mapping Agency).
008: *
009: * See: http://oxygene-project.sourceforge.net
010: *
011: * Copyright (C) 2005 Institut Géographique National
012: *
013: * This library is free software; you can redistribute it and/or modify it under the terms
014: * of the GNU Lesser General Public License as published by the Free Software Foundation;
015: * either version 2.1 of the License, or any later version.
016: *
017: * This library is distributed in the hope that it will be useful, but WITHOUT ANY
018: * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
019: * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
020: *
021: * You should have received a copy of the GNU Lesser General Public License along with
022: * this library (see file LICENSE if present); if not, write to the Free Software
023: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
024: *
025: */
026:
027: package fr.ign.cogit.geoxygene.spatial.coordgeom;
028:
029: import fr.ign.cogit.geoxygene.spatial.geomprim.GM_Surface;
030:
031: /**
032: * Portion homogène d'une GM_Surface.
033: *
034: * <P> Modification de la norme : cette classe hérite de GM_Surface. Du coup on a fait sauter le lien d'implémentation de GM_GenericSurface.
035: * Un GM_SurfacePatch sera une GM_Surface composée d'un et d'un seul segment qui sera lui-même.
036: * Les méthodes addSegment, removeSegment, etc... seront interdites.
037: *
038: * @author Thierry Badard & Arnaud Braun
039: * @version 1.0
040: *
041: */
042:
043: abstract public class GM_SurfacePatch extends GM_Surface
044: /*implements GM_GenericSurface*/{
045:
046: //////////////////////////////////////////////////////////////////////////////////
047: // Attributs /////////////////////////////////////////////////////////////////////
048: //////////////////////////////////////////////////////////////////////////////////
049: /** Mécanisme d'interpolation, selon une liste de codes.
050: * La liste de codes est la suivante :
051: * {none, planar, spherical, elliptical, conic, tin, parametricCurve, polynomialSpline, rationalSpline, triangulatedSpline}. */
052: protected String interpolation;
053:
054: /** Renvoie l'attribut interpolation. */
055: public String getInterpolation() {
056: return this .interpolation;
057: }
058:
059: /** Continuité entre self et ses voisins qui partagent une frontière commune.
060: * Vaut 0 par défaut. */
061: protected int numDerivativesOnBoundary = 0;
062:
063: /** Renvoie l'attribut numDerivativesOnBoundary. */
064: public int getNumDerivativesOnBoundary() {
065: return this .numDerivativesOnBoundary;
066: }
067:
068: //////////////////////////////////////////////////////////////////////////////////
069: // Méthodes (abstaites, implémentée dans les sous-classes)////////////////////////
070: //////////////////////////////////////////////////////////////////////////////////
071: /** Renvoie un GM_SurfacePatch de sens opposé. Méthode abstraite implémentée dans les sous-classes */
072: abstract public GM_SurfacePatch reverse();
073:
074: //////////////////////////////////////////////////////////////////////////////////
075: //////////////////////////////////////////////////////////////////////////////////
076: // Redefinition des methodes sur l'attribut "patch" //////////////////////////////
077: //////////////////////////////////////////////////////////////////////////////////
078: //////////////////////////////////////////////////////////////////////////////////
079: // le but est d'interdire l'acces a certaines methodes pour un GM_SurfacePatch
080:
081: /** Renvoie le patch de rang i. Passer nécessairement 0 en paramètre car un GM_SurfacePatch ne contient qu'un patch qui est lui-meme. */
082: public GM_SurfacePatch getPatch(int i) {
083: if (i != 0) {
084: System.out
085: .println("Recherche d'un segment avec i<>0 alors qu'un GM_SurfacePatch ne contient qu'un patch qui est lui-meme.");
086: return null;
087: } else
088: return (GM_SurfacePatch) this .patch.get(i);
089: }
090:
091: /** Ne fait rien car un GM_SurfacePatch ne contient qu'un patch qui est lui-meme. */
092: public void setPatch(int i, GM_SurfacePatch value) {
093: System.out
094: .println("Méthode inapplicable sur un GM_SurfacePatch. La méthode ne fait rien.");
095: }
096:
097: /** Ne fait rien car un GM_SurfacePatch ne contient qu'un patch qui est lui-meme. */
098: public void addPatch(GM_SurfacePatch value) {
099: System.out
100: .println("Méthode inapplicable sur un GM_SurfacePatch. La méthode ne fait rien.");
101: }
102:
103: /** Ne fait rien car un GM_SurfacePatch ne contient qu'un patch qui est lui-meme. */
104: public void addPatch(int i, GM_SurfacePatch value) {
105: System.out
106: .println("Méthode inapplicable sur un GM_SurfacePatch. La méthode ne fait rien.");
107: }
108:
109: /** Ne fait rien car un GM_SurfacePatch ne contient qu'un patch qui est lui-meme. */
110: public void removePatch(GM_SurfacePatch value) {
111: System.out
112: .println("Méthode inapplicable sur un GM_SurfacePatch. La méthode ne fait rien.");
113: }
114:
115: /** Ne fait rien car un GM_SurfacePatch ne contient qu'un patch qui est lui-meme.*/
116: public void removePatch(int i) {
117: System.out
118: .println("Méthode inapplicable sur un GM_SurfacePatch. La méthode ne fait rien.");
119: }
120:
121: }
|