2015-09-24 3 views
0

Я хочу нарисовать оси как в SketchUp, которые бесконечно длинны. Я уже рисовал линии с фиксированной длиной, но я хочу бесконечно долго.Как нарисовать бесконечно длинную линию в SCENEKIT?

+2

вы можете перерисовать линию при перемещении экрана, или вы можете сделать эту линию в центре. –

+0

попробуйте поставить «INFINITY» как ширину или высоту из math.h –

+0

Did not made it. Хорошая идея, хотя :) –

ответ

1

Поддельный это с линиями фиксированной длины, которые выходят из-за зрения камеры (так называемый усеченный) , через него, а затем за ним снова.

Вы можете создать начало и конец SCNNode экземпляров для каждой оси. Затем каждый раз, когда камера меняет вид, звоните

func isNodeInsideFrustum(_ node: SCNNode, 
    withPointOfView pointOfView: SCNNode) -> Bool 

на каждой из ваших 6 конечных точек. Если конечная точка находится внутри усеченного конуса, переместите ее дальше, пока она не станет.

Способы в протоколе SCNSceneRendererDelegate могут быть вам полезны.

+0

Очень благодарю вас. Это будет более полезно, если вы продемонстрируете реализацию вышеуказанной функции. –

1

В зависимости от того, что вы имеете в виду, вы проверяете, когда размер линии пересечет некоторую ось x или y на экране. Вы можете определить размер экрана, используя size.frame. Кроме того, вы можете использовать CGRectGetMidX, CGRectGetMidY и т.д.

Например, я хотел бы сделать что-то вроде этого:

var x = CGRectGetMaxX(self.frame) 
//Where y is the max size of the line you have 
if x <= y { 
    //Code where you make the line shape extend or add another line over it to make it look continous 
} 
Смежные вопросы