forked from kscience/visionforge
Added polygone with a hole to Root converter
This commit is contained in:
parent
c7640a686a
commit
52d346453c
@ -188,7 +188,7 @@ private fun SolidGroup.addShape(
|
|||||||
}
|
}
|
||||||
|
|
||||||
"TGeoPgon" -> {
|
"TGeoPgon" -> {
|
||||||
//TODO add a inner polygone layer
|
|
||||||
val fDphi by shape.meta.double(0.0)
|
val fDphi by shape.meta.double(0.0)
|
||||||
val fNz by shape.meta.int(2)
|
val fNz by shape.meta.int(2)
|
||||||
val fPhi1 by shape.meta.double(360.0)
|
val fPhi1 by shape.meta.double(360.0)
|
||||||
@ -201,19 +201,26 @@ private fun SolidGroup.addShape(
|
|||||||
val startphi = degToRad(fPhi1)
|
val startphi = degToRad(fPhi1)
|
||||||
val deltaphi = degToRad(fDphi)
|
val deltaphi = degToRad(fDphi)
|
||||||
|
|
||||||
extruded(name) {
|
fun Shape2DBuilder.pGon(radius: Double){
|
||||||
|
(0..<fNedges).forEach {
|
||||||
|
val phi = deltaphi / fNedges * it + startphi
|
||||||
|
point(radius * cos(phi), radius * sin(phi))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
surface(name) {
|
||||||
//getting the radius of first
|
//getting the radius of first
|
||||||
require(fNz > 1) { "The polyhedron geometry requires at least two planes" }
|
require(fNz > 1) { "The polyhedron geometry requires at least two planes" }
|
||||||
val baseRadius = fRmax[0]
|
for (index in 0 until fNz){
|
||||||
shape {
|
layer(
|
||||||
(0..<fNedges).forEach {
|
fZ[index],
|
||||||
val phi = deltaphi / fNedges * it + startphi
|
innerBuilder = {
|
||||||
point(baseRadius * cos(phi), baseRadius * sin(phi))
|
pGon(fRmin[index])
|
||||||
}
|
},
|
||||||
}
|
outerBuilder = {
|
||||||
(0 until fNz).forEach { index ->
|
pGon(fRmax[index])
|
||||||
//scaling all radii relative to first layer radius
|
}
|
||||||
layer(fZ[index], scale = fRmax[index] / baseRadius)
|
)
|
||||||
}
|
}
|
||||||
}.apply(block)
|
}.apply(block)
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ fun main() = makeVisionFile {
|
|||||||
polygon(8, 100)
|
polygon(8, 100)
|
||||||
}
|
}
|
||||||
layer(-30)
|
layer(-30)
|
||||||
|
layer(0, x = 10, y = 10)
|
||||||
layer(30)
|
layer(30)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,9 +10,9 @@ fun main() = makeVisionFile {
|
|||||||
solid {
|
solid {
|
||||||
ambientLight()
|
ambientLight()
|
||||||
surface("surface") {
|
surface("surface") {
|
||||||
layer(0, {polygon(8,10)}, {polygon(8,20)})
|
layer(0, { polygon(8, 10) }, { polygon(8, 20) })
|
||||||
layer(10, {polygon(8,10)}, {polygon(8,30)})
|
layer(10, { polygon(8, 20) }, { polygon(8, 30) })
|
||||||
|
layer(20, { polygon(8, 10) }, { polygon(8, 20) })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user