Initial commit for first version of project

This commit is contained in:
Dennis Nemec
2026-09-02 20:54:36 +02:00
parent 3d9f1ab6bc
commit 992bb32025
56 changed files with 5139 additions and 31 deletions

View File

@ -0,0 +1,49 @@
//
// PipeRoute.swift
// GasTankAR
//
// Created by Dennis Nemec on 28.08.26.
//
import Foundation
import simd
/// Eine Rohrführung als geordnete Folge von Wegpunkten (Welt-Koordinaten), die zu einem
/// zusammenhängenden Pfad verbunden werden – visualisiert die geplante Rohrverlegung.
struct PipeRoute {
private(set) var waypoints: [SIMD3<Float>] = []
var count: Int { waypoints.count }
/// Gesamtlänge des Pfads über alle Segmente in Metern.
var totalLength: Float {
guard waypoints.count > 1 else { return 0 }
return zip(waypoints, waypoints.dropFirst())
.reduce(0) { $0 + simd_distance($1.0, $1.1) }
}
var formattedLength: String {
String(format: "%.2f m", totalLength)
}
mutating func add(_ waypoint: SIMD3<Float>) {
waypoints.append(waypoint)
}
@discardableResult
mutating func removeLast() -> SIMD3<Float>? {
waypoints.isEmpty ? nil : waypoints.removeLast()
}
mutating func clear() {
waypoints.removeAll()
}
}
/// Ablaufphasen beim Erstellen einer Rohrführung.
enum PipeRoutingPhase: Equatable {
/// Kein Rohr-Routing aktiv.
case idle
/// Wegpunkte werden gesetzt.
case placing
}