final Vector3 center = Vector3.add(firstPoint, secondPoint).scaled(.5f); Vector3.add( directionFromTopToBottom.scaled(-halfHeight), Vector3.add( rightDirection.scaled(radius * cosTheta), upDirection.scaled(radius * sinTheta))); Vector3 normal = Vector3.subtract(topPosition, directionFromTopToBottom.scaled(-halfHeight)).normalized(); topPosition = Vector3.add(topPosition, center); UvCoordinate uvCoordinate = new UvCoordinate(uStep * edgeIndex, 0); Vector3.add( directionFromTopToBottom.scaled(halfHeight), Vector3.add( rightDirection.scaled(radius * cosTheta), upDirection.scaled(radius * sinTheta))); normal = Vector3.subtract(bottomPosition, directionFromTopToBottom.scaled(halfHeight)) .normalized(); bottomPosition = Vector3.add(bottomPosition, center); float vHeight = halfHeight * 2; uvCoordinate = new UvCoordinate(uStep * edgeIndex, vHeight);