IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

3D Java Discussion :

[Java3D] Plan parabolique


Sujet :

3D Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Points : 29
    Points
    29
    Par défaut [Java3D] Plan parabolique
    Bonjour à tous,

    Voilà maintenant deux semaines que je travaille avec Java3D, et un problème se pose à moi. J'aimerais pouvoir tracer un plan parabolique à partir de son équation. Seulement aprés de nombreuses recherches sur le net, je n'ai rien trouvé qui indique comment procéder pour faire quelquechose de smilaire...

    Si quelqu'un ici saît comment on peut faire ?

  2. #2
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Points : 29
    Points
    29
    Par défaut up
    Plus simplement et pour commencer, si quelqu'un sait comment représenter la courbe d'une fonction sur un plan avec Java3D, cela me ferait déjà une bonne base...

    Merci par avance.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Points : 29
    Points
    29
    Par défaut ^up^
    Personne ne sait comment on peut représenter un objet quelconque à partir de l'équation de l'ensemble de ces points ?

    S'il vous plaît, si vous avez ne serait-ce qu'une idée (même si vous en êtes pas sûr), ou encore un lien... cela me serez grandement utile...

    Merci.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Points : 29
    Points
    29
    Par défaut Dans ce style...
    Voilà à cette adresse, il semble faire quelquechose proche de ce que je voudrais faire :
    http://home.hia.no/~byrgeb/bb/classe...ion2Graph.html

    Seulement toutes les sources ne sont pas disponibles, et celles qui le sont, sont commentées en partie en Norvégien (langue que je ne pratique pas hélas).
    Est-ce que quelqu'un peut me dire comment il procéde ? (ou alors me traduire le Norvégien !? )

    Merci.

    [Nean]

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Un peu tard ..mais c'est pour la postérité. J'ai trouvé ça sur le net.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
     
     
    //http://hi.baidu.com/yjy2410578/blog/item/9748eaf4af867ae77709d77b.html
     
    import java.applet.Applet;
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Frame;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.GraphicsConfiguration;
    import java.awt.Polygon;
    import java.awt.geom.GeneralPath;
    import java.util.Arrays;
    import java.util.Random;
    import java.util.Vector;
     
    import javax.media.j3d.Appearance;
    import javax.media.j3d.Background;
    import javax.media.j3d.BoundingSphere;
    import javax.media.j3d.BranchGroup;
    import javax.media.j3d.Canvas3D;
    import javax.media.j3d.ColoringAttributes;
    import javax.media.j3d.DirectionalLight;
    import javax.media.j3d.Geometry;
    import javax.media.j3d.GeometryArray;
    import javax.media.j3d.LineArray;
    import javax.media.j3d.LineAttributes;
    import javax.media.j3d.LineStripArray;
    import javax.media.j3d.Material;
    import javax.media.j3d.PointArray;
    import javax.media.j3d.PointAttributes;
    import javax.media.j3d.PolygonAttributes;
    import javax.media.j3d.QuadArray;
    import javax.media.j3d.Shape3D;
    import javax.media.j3d.Transform3D;
    import javax.media.j3d.TransformGroup;
    import javax.media.j3d.TransparencyAttributes;
    import javax.media.j3d.TriangleArray;
    import javax.media.j3d.TriangleFanArray;
    import javax.media.j3d.TriangleStripArray;
    import javax.vecmath.Color3f;
    import javax.vecmath.Matrix4f;
    import javax.vecmath.Point3d;
    import javax.vecmath.Point3f;
    import javax.vecmath.Point4f;
    import javax.vecmath.Quat4f;
    import javax.vecmath.Vector3f;
    import javax.vecmath.Vector4f;
     
     
    import com.sun.j3d.utils.applet.MainFrame;
    import com.sun.j3d.utils.behaviors.mouse.MouseRotate;
    import com.sun.j3d.utils.behaviors.mouse.MouseTranslate;
    import com.sun.j3d.utils.behaviors.mouse.MouseZoom;
    import com.sun.j3d.utils.geometry.Box;
    import com.sun.j3d.utils.geometry.ColorCube;
    import com.sun.j3d.utils.geometry.Cone;
    import com.sun.j3d.utils.geometry.Cylinder;
    import com.sun.j3d.utils.geometry.Sphere;
    import com.sun.j3d.utils.scenegraph.io.state.javax.media.j3d.TransparencyAttributesState;
    import com.sun.j3d.utils.universe.SimpleUniverse;
     
     
    public class My3d extends Applet{
    public BranchGroup mywork(){
       BranchGroup Root = new BranchGroup();
       BoundingSphere bounds = new BoundingSphere(new Point3d(0,0,0),100 );
       Color3f bgColor = new Color3f(1,1,1);
       Background bg= new Background(bgColor);
       bg.setApplicationBounds(bounds);
       Root.addChild(bg);
     
       Color3f diColor = new Color3f(1,0,0);
       Vector3f vec = new Vector3f(0,0,-1);
     
       DirectionalLight dili = new DirectionalLight(diColor,vec);
       dili.setInfluencingBounds(bounds);
     
       Root.addChild(dili);
     
       TransformGroup trans = new TransformGroup();
       trans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
       trans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
     
       Root.addChild(trans);
       MouseRotate mrot = new MouseRotate();
       mrot.setTransformGroup(trans);
     
       Root.addChild(mrot);
       mrot.setSchedulingBounds(bounds);
       MouseZoom mzoom = new MouseZoom();
       mzoom.setTransformGroup(trans);
       Root.addChild(mzoom);
       mzoom.setSchedulingBounds(bounds);
     
       MouseTranslate mtr = new MouseTranslate();
       mtr.setTransformGroup(trans);
       Root.addChild(mtr);
       mtr.setSchedulingBounds(bounds);
     
       trans.addChild(myctrl());
       trans.addChild(mybezier());
       Root.compile();
     
       return Root;
    }
    private Shape3D mybezier(){
       Shape3D ret = new Shape3D();
       ret.setGeometry(bezier());
       ret.setAppearance(mkapp());
       return ret;
    }
    private Geometry bezier(){
       float [][] M = {{1, 0, 0, 0},
                 {-3, 3, 0, 0},
                 {3 ,-6, 3, 0},
                 {-1, 3, -3,1}};
       int nt = 100;
       float [] t = new float[nt];
       float div =(float)(1.0/(nt-1));
       int i;
       for (i=0;i<nt;i++){
        t[i]=i*div;
       }
       //ctrl 2 float[][]
       float [][] pset = new float[4][4];
       for (i=0;i<4;i++){
        ctrl[i].get(pset[i]);
       }
       Point3f []curv = new Point3f[nt]; 
       for (i=0;i<nt;i++){
        float [] tt = {1,t[i],t[i]*t[i],t[i]*t[i]*t[i]};
        float [] tmp = mymul(tt,M);
        tmp = mymul(tmp,pset);
     
        curv[i] = new Point3f(tmp[0]/tmp[3],tmp[1]/tmp[3],tmp[2]/tmp[3]); 
       }
       LineStripArray la = new LineStripArray(nt , GeometryArray.COORDINATES,new int[]{nt});
       la.setCoordinates(0, curv);
       return la;
    }
    private float [] mymul(float []tt ,float[][] M){
       int i,j,k;
       float [] ret = new float[4];
       for (i=0;i<4;i++){
        ret[i]=0;
        for (j=0;j<4;j++){
          ret[i]+=tt[j]*M[j][i];
        }
       }
       return ret;
    }
    private Shape3D myctrl(){
       Shape3D ret = new Shape3D();
       ret.setGeometry(mkgeo());
       ret.setAppearance(mkapp());
     
       return ret;
    }
    int vct = 4;
    private Point4f []ctrl=new Point4f[4];
        private Geometry mkgeo(){
     
            LineStripArray linectrl = new LineStripArray(vct , GeometryArray.COORDINATES ,new int []{vct});
            linectrl.setCoordinates(0, cover(ctrl));
            return linectrl;
    }
    private Point3f [] cover(Point4f [] pset){
       Point3f[] ret = new Point3f[pset.length];
       for (int i=0;i<pset.length;i++){
        float w = pset[i].w;
        ret[i]=new Point3f(pset[i].x/w , pset[i].y/w , pset[i].z/w);
       }
       return ret;
    }
    private Appearance mkapp(){
       Appearance app =new Appearance();
       PolygonAttributes pa = new PolygonAttributes();
       //pa.setPolygonMode(PolygonAttributes.POLYGON_LINE);
       //pa.setCullFace(PolygonAttributes.CULL_NONE);
       LineAttributes la =new LineAttributes();
       la.setLineWidth(40.0f);
         ColoringAttributes ca = new ColoringAttributes();
         ca.setColor(new Color3f(1,0,0));
         app.setColoringAttributes(ca);
       app.setPolygonAttributes(pa);
       app.setLineAttributes(la);
       return app;
    }
    public My3d() {
       ctrl[0] = new Point4f(-0.8f , -0.6f ,0 ,1); 
         ctrl[1] = new Point4f(-0.2f,0.2f,0,1);
         ctrl[2] = new Point4f(0.2f,0.3f,0,1);
         ctrl[3] = new Point4f(0.8f,-0.5f,0,1);
     
       // TODO Auto-generated constructor stub
       setLayout(new BorderLayout());
       GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
       Canvas3D c = new Canvas3D(config);
       add("Center",c);
       BranchGroup sc = mywork();
       sc.compile();
       SimpleUniverse su = new SimpleUniverse(c);
       su.getViewingPlatform().setNominalViewingTransform();
       su.addBranchGraph(sc);
     
    }
     
    public static void main(String[] args) {
       Frame f = new MainFrame(new My3d(),512,512);
    }
    }
     
     
    //end

Discussions similaires

  1. [Java3D] Afficher une grille sur le plan
    Par akito dans le forum 3D
    Réponses: 5
    Dernier message: 23/03/2007, 17h30
  2. [java3D][collision]
    Par geofun dans le forum 3D
    Réponses: 7
    Dernier message: 12/02/2007, 14h49
  3. Installer Interbase en arriere plan depuis delphi
    Par nanaalain dans le forum Bases de données
    Réponses: 9
    Dernier message: 24/11/2003, 14h18
  4. Plan type d'un document de spécification
    Par ludovic.fernandez dans le forum Test
    Réponses: 3
    Dernier message: 06/12/2002, 17h36
  5. changer l'image d'arrière plan du bureau
    Par etenclin dans le forum MFC
    Réponses: 7
    Dernier message: 22/08/2002, 15h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo