Skip to content

Instantly share code, notes, and snippets.

View eugenebokhan's full-sized avatar

eugene eugenebokhan

View GitHub Profile
import CoreGraphics
extension CGImage {
func grayscalePixelData() -> [UInt8] {
let startTime = CACurrentMediaTime()
let size = CGSize(width: self.width,
height: self.height)
let dataSize = size.width * size.height
var pixelData = [UInt8](repeating: 0,
@eugenebokhan
eugenebokhan / GetPrivateProperties.swift
Created July 10, 2019 14:13
Get Private Properties
import Foundation
func getProperties(of object: AnyObject) -> [Any?] {
return self.getPropertyNames(of: type(of: object)).map { value(forKey: $0) }
}
func getPropertyNames(of type: AnyClass) -> [String] {
var count: UInt32 = 0
let propertyList = class_copyPropertyList(type, &count)
let propertyArray = Array(UnsafeBufferPointer(start: propertyList, count: Int(count)))
@eugenebokhan
eugenebokhan / CGImage+Resize.swift
Last active April 11, 2024 21:28
UIImage + Resize
import CoreGraphics
import Accelerate
import CoreImage
import UIKit
extension CGImage {
public enum Error: Swift.Error {
case imageResizingFailed
case cgContextCreationFailed
import SceneKit
func createAxesNode(quiverLength: CGFloat, quiverThickness: CGFloat) -> SCNNode {
let quiverThickness = (quiverLength / 50.0) * quiverThickness
let chamferRadius = quiverThickness / 2.0
let xQuiverBox = SCNBox(width: quiverLength, height: quiverThickness, length: quiverThickness, chamferRadius: chamferRadius)
xQuiverBox.materials = [SCNMaterial.material(withDiffuse: UIColor.red, respondsToLighting: false)]
let xQuiverNode = SCNNode(geometry: xQuiverBox)
xQuiverNode.position = SCNVector3Make(Float(quiverLength / 2.0), 0.0, 0.0)
import SceneKit
public class LineNode: SCNNode {
// Properties
var startPoint: SCNVector3!
var endPoint: SCNVector3!
var radius: CGFloat!
var color: UIColor!
import ARKit
extension ARSCNView {
func setup() {
antialiasingMode = .multisampling4X
automaticallyUpdatesLighting = false
preferredFramesPerSecond = 60
contentScaleFactor = 1.3
extension CGRect {
var mid: CGPoint {
return CGPoint(x: midX, y: midY)
}
}
extension CGSize {
init(_ point: CGPoint) {
self.width = point.x
self.height = point.y
}
func friendlyString() -> String {
return "(\(String(format: "%.2f", width)), \(String(format: "%.2f", height)))"
}
extension CGPoint {
init(_ size: CGSize) {
self.x = size.width
self.y = size.height
}
init(_ vector: SCNVector3) {
self.x = CGFloat(vector.x)
self.y = CGFloat(vector.y)
@eugenebokhan
eugenebokhan / SCNMaterial extensions.swift
Created March 2, 2018 11:59
SCNMaterial extensions
extension SCNMaterial {
static func material(withDiffuse diffuse: Any?, respondsToLighting: Bool = true) -> SCNMaterial {
let material = SCNMaterial()
material.diffuse.contents = diffuse
material.isDoubleSided = true
if respondsToLighting {
material.locksAmbientWithDiffuse = true
} else {
material.ambient.contents = UIColor.black