40 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
use bevy::math::Vec3;
 | 
						|
use laserspace::trap::laser::{self, apply_homography_matrix};
 | 
						|
 | 
						|
/*
 | 
						|
Compare output with the following python
 | 
						|
```python
 | 
						|
import numpy as np
 | 
						|
import cv2
 | 
						|
 | 
						|
H =np.array([[ 2.47442963e+02, -7.01714050e+01, -9.71749119e+01],
 | 
						|
            [ 1.02328119e+01,  1.47185254e+02,  1.96295638e+02],
 | 
						|
            [-1.20921986e-03, -3.32735973e-02,  1.00000000e+00]])
 | 
						|
 | 
						|
points =[[1.,1.0],[2.0,2.0]]
 | 
						|
print(cv2.perspectiveTransform(np.array([points]), H))
 | 
						|
```
 | 
						|
 */
 | 
						|
fn main(){
 | 
						|
    {
 | 
						|
        let point = Vec3::new(1.0,1.0,1.0);
 | 
						|
        let laser_h = laser::python_cv_h_into_mat3(laser::TMP_PYTHON_LASER_H);
 | 
						|
        let new_point = laser_h.mul_vec3(point);
 | 
						|
        println!("{} is wrong", new_point);
 | 
						|
    }
 | 
						|
    {
 | 
						|
        let point = Vec3::new(2.0,2.0,1.0);
 | 
						|
        let laser_h = laser::python_cv_h_into_mat3(laser::TMP_PYTHON_LASER_H);
 | 
						|
        let new_point = laser_h.mul_vec3(point);
 | 
						|
        println!("{} is also wrong", new_point);
 | 
						|
        let t = [new_point[0]/new_point[2],new_point[1]/new_point[2]];
 | 
						|
        println!("{:?} but can be fixed!", t);
 | 
						|
    }
 | 
						|
    {
 | 
						|
 | 
						|
        let p = apply_homography_matrix(laser::python_cv_h_into_mat3(laser::TMP_PYTHON_LASER_H), &[1.,1.]);
 | 
						|
        println!("{:?} this is right as well!", p);
 | 
						|
        
 | 
						|
    }
 | 
						|
}   
 | 
						|
 |