Skip to content
Snippets Groups Projects
Commit 804a04d9 authored by Alexander Rose's avatar Alexander Rose
Browse files

fixed coarse trace-iterator direction vectors

parent c7b618c2
No related branches found
No related tags found
No related merge requests found
......@@ -153,9 +153,13 @@ export class AtomicPolymerTraceIterator implements Iterator<PolymerTraceElement>
}
private setFromToVector(out: Vec3, residueIndex: ResidueIndex) {
this.pos(tmpVecA, this.directionFromElementIndex[residueIndex])
this.pos(tmpVecB, this.directionToElementIndex[residueIndex])
Vec3.sub(out, tmpVecB, tmpVecA)
if (this.value.isCoarseBackbone) {
Vec3.set(out, 1, 0, 0)
} else {
this.pos(tmpVecA, this.directionFromElementIndex[residueIndex])
this.pos(tmpVecB, this.directionToElementIndex[residueIndex])
Vec3.sub(out, tmpVecB, tmpVecA)
}
}
private setDirection(out: Vec3, v1: Vec3, v2: Vec3, v3: Vec3) {
......@@ -204,6 +208,7 @@ export class AtomicPolymerTraceIterator implements Iterator<PolymerTraceElement>
value.first = residueIndex === this.residueSegmentMin
value.last = residueIndex === this.residueSegmentMax
value.moleculeType = this.moleculeType[residueIndex]
value.isCoarseBackbone = this.directionFromElementIndex[residueIndex] === -1 || this.directionToElementIndex[residueIndex] === -1
const residueIndexPrev3 = this.getResidueIndex(residueIndex - 3)
const residueIndexPrev2 = this.getResidueIndex(residueIndex - 2)
......@@ -244,7 +249,6 @@ export class AtomicPolymerTraceIterator implements Iterator<PolymerTraceElement>
value.centerNext.element = this.traceElementIndex[residueIndexNext1]
this.pos(this.p6, this.traceElementIndex[residueIndexNext3])
this.setFromToVector(this.d34, residueIndexNext2)
value.isCoarseBackbone = this.directionFromElementIndex[residueIndex] === -1 || this.directionToElementIndex[residueIndex] === -1
this.setControlPoint(value.p0, this.p0, this.p1, this.p2, residueIndexPrev2)
this.setControlPoint(value.p1, this.p1, this.p2, this.p3, residueIndexPrev1)
......@@ -359,6 +363,8 @@ export class CoarsePolymerTraceIterator implements Iterator<PolymerTraceElement>
constructor(private unit: Unit.Spheres | Unit.Gaussians, structure: Structure) {
this.polymerIt = SortedRanges.transientSegments(getPolymerRanges(unit), unit.elements);
this.value = createPolymerTraceElement(unit)
Vec3.set(this.value.d12, 1, 0, 0)
Vec3.set(this.value.d23, 1, 0, 0)
switch (unit.kind) {
case Unit.Kind.Spheres: this.conformation = unit.model.coarseConformation.spheres; break
case Unit.Kind.Gaussians: this.conformation = unit.model.coarseConformation.gaussians; break
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment