I
iltis
Gast
hallo zusammen,
ich verstehe es einfach nicht, bitte hilf mir jemand auf die sprünge...
ich habe eine rekursive methode, die eine xmldatei durchläuft und für jedes gefundene xmlelement einen X3DNode (im prinzip einen punkt mit den koordinaten x,y,z) zeichnet. dabei sollen X3DNodes immer deren Childknoten enhalten, also ineinander verschachtelt sein, so wie auch in der xmldatei. wenn jeder X3DNode die z-position 10 relativ zu seinem parent hat, ist jede "ebene" 10 einheiten verschoben. ok, meine erste methode funktioniert soweit:
leider muss ich die rekursion aber von "unten" beginnen (also bei nicht beim ersten, sondern beim letzten xmlelement anfangen), weil ich später noch eine variable übergeben muss. aber wenn ich das ganze umdrehe, funktioniert es leider nicht mehr:
hierbei sind die punkte nicht pro "ebene" um 10 einheiten versetzt, sondern liegen alle auf einem punkt. scheinbar sind die X3DNodes nicht ineinander verschachtelt. aber wieso nicht?? ???:L
ich verstehe es einfach nicht, bitte hilf mir jemand auf die sprünge...
ich habe eine rekursive methode, die eine xmldatei durchläuft und für jedes gefundene xmlelement einen X3DNode (im prinzip einen punkt mit den koordinaten x,y,z) zeichnet. dabei sollen X3DNodes immer deren Childknoten enhalten, also ineinander verschachtelt sein, so wie auch in der xmldatei. wenn jeder X3DNode die z-position 10 relativ zu seinem parent hat, ist jede "ebene" 10 einheiten verschoben. ok, meine erste methode funktioniert soweit:
Code:
// position eines elementes ist jeweils um 10 einheiten auf der z-achse verschoben ( relativ zum parent )
float[] position = new float[]{0,0,-10};
public void traverseDocument(Element e, X3DNode parent, float[] position){
//process current element
// neuen X3DNode erzeugen und als child an parent anfügen
X3DNode newChild = creator.createX3DObject(position, parent);
// erzeugten X3DNode als parent setzen
MFNode child = (MFNode)newChild.getField("children");
parent = child.get1Value(0);
//process Children
List chList = e.getChildren();
Iterator itr = chList.iterator();
while(itr.hasNext()){
Element next = (Element)itr.next();
traverseDocument(next, parent, position);
}
}
Code:
public void traverseDocument(Element e, X3DNode parent, float[] position){
//process Children
List chList = e.getChildren();
Iterator itr = chList.iterator();
while(itr.hasNext()){
Element next = (Element)itr.next();
traverseDocument(next, parent, position);
}
//process current element
// neuen X3DNode erzeugen und als child an parent anfügen
X3DNode newChild = creator.createX3DObject(position, parent);
// erzeugten X3DNode als parent setzen
MFNode child = (MFNode)newChild.getField("children");
parent = child.get1Value(0);
}
hierbei sind die punkte nicht pro "ebene" um 10 einheiten versetzt, sondern liegen alle auf einem punkt. scheinbar sind die X3DNodes nicht ineinander verschachtelt. aber wieso nicht?? ???:L