Skip to content

Instantly share code, notes, and snippets.

func scanText() {
var superString:String = ""
let requestHandler = VNImageRequestHandler(cgImage: (selectedImage?.cgImage)!)
let request = VNRecognizeTextRequest{ (request, error) in
guard let observations = request.results as? [VNRecognizedTextObservation] else { return }
for textObjects in observations {
let topCandiate = textObjects.topCandidates(1)
if let recognizedText = topCandiate.first {
print(recognizedText.string)
superString += recognizedText.string
//
// ContentView.swift
// Molecule
//
// Created by localuser on 10.10.22.
//
import SwiftUI
import SceneKit
import Combine
let doubleRecognizer = UITapGestureRecognizer(target: self, action: #selector(doubleTap(_:)))
doubleRecognizer.numberOfTapsRequired = 2
view.addGestureRecognizer(doubleRecognizer)
@objc func doubleTap(_ gestureRecognize: UIGestureRecognizer) {
let p = gestureRecognize.location(in: view)
let hitResults = view.hitTest(p, options: [:])
if hitResults.count > 0 {
var result = hitResults[0].node as? NewNode
let longRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(longTap(_:)))
view.addGestureRecognizer(longRecognizer)
@objc func longTap(_ gestureRecognize: UIGestureRecognizer) {
let p = gestureRecognize.location(in: view)
let hitResults = view.hitTest(p, options: [:])
if hitResults.count > 0 {
let result = hitResults[0].node as? NewNode
if gestureRecognize.state == .ended {
.gesture(
DragGesture(minimumDistance: dragDistance)
.onChanged { gesture in
drag.send(gesture.location)
}
)
dragging = drag.sink(receiveValue: { [self] points in
let hitResults = view.hitTest(points, options: [:])
if hitResults.count > 0 {
let panRecognizer = UIPanGestureRecognizer(target: self, action: #selector(handlePan(_:)))
view.addGestureRecognizer(panRecognizer)
@objc func handlePan(_ gestureRecognize: UIPanGestureRecognizer) {
let p = gestureRecognize.location(in: view)
let hitResults = view.hitTest(p, options: [:])
if hitResults.count > 0 {
let result = hitResults[hitResults.count - 1].node as? NewNode
let newPosition = p.scnVector3Value(view: view, depth: Float(result!.position.z))
while (intersects(point: newPosition, center: result!.position, radius: 0.5)) {
if view.pointOfView!.worldPosition.x > 3.5 {
result!.position.x += 1
}
if view.pointOfView!.worldPosition.x < -3.5 {
result!.position.x -= 1
}
if view.pointOfView!.worldPosition.y > 3.5 {
result!.position.y += 1
}
func intersects(point:SCNVector3, center:SCNVector3, radius:Float) -> Bool
{
let displacementToCenter = point - center;
let radiusSqr = radius * radius;
let intersects = displacementToCenter.magnitude < radiusSqr;
return intersects;
}
if hitResults.count == 0 {
var newPosition = p.scnVector3Value(view: view, depth: 0)
if gestureRecognize.state == .ended {
newPosition.x = newPosition.x.rounded(FloatingPointRoundingRule.toNearestOrEven)
newPosition.y = newPosition.y.rounded(FloatingPointRoundingRule.toNearestOrEven)
newPosition.z = newPosition.z.rounded(FloatingPointRoundingRule.toNearestOrEven)
let newPart = moleculeBody(snakePosition: newPosition, name: String("Node \(name)"))
name += 1
func CGPointToSCNVector3(view: SCNView, depth: Float, point: CGPoint) -> SCNVector3 {
let projectedOrigin = view.projectPoint(SCNVector3Make(0, 0, depth))
let locationWithz = SCNVector3Make(Float(point.x), Float(point.y), projectedOrigin.z)
return view.unprojectPoint(locationWithz)
}