Add color rotation matrix to Parameters
This commit is contained in:
		
							parent
							
								
									0844fbc010
								
							
						
					
					
						commit
						d3190dd7e7
					
				
					 3 changed files with 13 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -13,6 +13,7 @@ import simd
 | 
			
		|||
public typealias Float2 = packed_float2
 | 
			
		||||
public typealias Float3 = float3
 | 
			
		||||
public typealias Float4 = float4
 | 
			
		||||
public typealias Matrix2x2 = float2x2
 | 
			
		||||
public typealias Matrix3x3 = float3x3
 | 
			
		||||
public typealias Matrix4x4 = float4x4
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -42,6 +43,15 @@ extension Float4 {
 | 
			
		|||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
extension Matrix2x2 {
 | 
			
		||||
    static func rotation(theta: Float) -> Matrix2x2 {
 | 
			
		||||
        return self.init(rows: [
 | 
			
		||||
            Float2(cos(theta), -sin(theta)),
 | 
			
		||||
            Float2(sin(theta),  cos(theta)),
 | 
			
		||||
        ])
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
extension Matrix4x4 {
 | 
			
		||||
    /// Create a 4x4 orthographic projection matrix with the provided 6-tuple.
 | 
			
		||||
    /// @see https://en.wikipedia.org/wiki/Orthographic_projection
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -49,6 +49,8 @@ public struct Parameters {
 | 
			
		|||
    public var color2 = Float4()
 | 
			
		||||
    public var color3 = Float4()
 | 
			
		||||
 | 
			
		||||
    public var colorRotation = Matrix2x2(1.0)
 | 
			
		||||
 | 
			
		||||
    public var colorStyle: ColorStyle {
 | 
			
		||||
        get {
 | 
			
		||||
            return ColorStyle(rawValue: _colorStyle)!
 | 
			
		||||
| 
						 | 
				
			
			@ -234,9 +236,6 @@ public class Field {
 | 
			
		|||
                var r = ball.radius
 | 
			
		||||
                ptr = write(value: &r, to: ptr)
 | 
			
		||||
                ptr = ptr.advanced(by: 4)   // Skip 4 bytes to maintain alignment.
 | 
			
		||||
//                if idx == 0 {
 | 
			
		||||
//                    print("Populated ball \(idx): x:\(ball.position.x), y:\(ball.position.y), r:\(r)")
 | 
			
		||||
//                }
 | 
			
		||||
                idx += 1
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -44,6 +44,7 @@ typedef struct {
 | 
			
		|||
    float target;
 | 
			
		||||
    float feather;
 | 
			
		||||
    float4 colors[4];
 | 
			
		||||
    float2x2 colorRotation;
 | 
			
		||||
} Parameters;
 | 
			
		||||
 | 
			
		||||
typedef float3 Ball;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue