Wed 28 Aug 21:38:52 CEST 2024
This commit is contained in:
		
							parent
							
								
									ffca50979e
								
							
						
					
					
						commit
						ffabb56884
					
				
							
								
								
									
										89
									
								
								src/SimNDT/core/inspectionSetup.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								src/SimNDT/core/inspectionSetup.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,89 @@ | |||
| #!/usr/bin/env python | ||||
| # encoding: utf-8 | ||||
| """ | ||||
| inspection.py | ||||
| 
 | ||||
| Created by Miguel Molero on 2013-09-26. | ||||
| Copyright (c) 2013 MMolero. All rights reserved. | ||||
| """ | ||||
| 
 | ||||
| import numpy as np | ||||
| 
 | ||||
| 
 | ||||
| def setEmisor(Theta, Size, x2, y2, X0, Y0): | ||||
|     Ntheta = np.size(Theta, 0) | ||||
|     NXL = int(2.0 * Size) | ||||
| 
 | ||||
|     xL = np.zeros((NXL,), dtype=np.float32) | ||||
|     yL = np.zeros((NXL,), dtype=np.float32) | ||||
| 
 | ||||
|     for m in range(0, Ntheta): | ||||
| 
 | ||||
|         if np.abs(np.cos(Theta[m])) < 1e-5: | ||||
|             yL = np.arange(y2[m] - Size, y2[m] + Size) | ||||
|             xL[:] = x2[m] * np.ones((NXL,), dtype=np.float32) | ||||
| 
 | ||||
|         elif np.abs(np.cos(Theta[m])) == 1: | ||||
|             xL[:] = np.arange(x2[m] - Size, x2[m] + Size) | ||||
|             yL[:] = y2[m] - ((x2[m] - X0) / (y2[m] - Y0)) * (xL[:] - x2[m]) | ||||
| 
 | ||||
|         else: | ||||
|             xL[:] = np.linspace(x2[m] - (Size * np.abs(np.cos(Theta[m]))), x2[m] + (Size * np.abs(np.cos(Theta[m]))), | ||||
|                                 num=NXL, endpoint=True) | ||||
|             yL = y2[m] - ((x2[m] - X0) / (y2[m] - Y0)) * (xL[0:NXL] - x2[m]) | ||||
| 
 | ||||
|         if m == 0: | ||||
|             XL = np.zeros((np.size(xL, 0), Ntheta), dtype=np.float32) | ||||
|             YL = np.zeros((np.size(xL, 0), Ntheta), dtype=np.float32) | ||||
| 
 | ||||
|         XL[:, m] = np.int32((xL[0:np.size(xL, 0)])) | ||||
|         YL[:, m] = np.int32((yL[0:np.size(xL, 0)])) | ||||
| 
 | ||||
|     return XL, YL | ||||
| 
 | ||||
| 
 | ||||
| def centerOffset(XL, YL, Theta, Scenario, transducer, Ratio): | ||||
|     Ntheta = np.size(Theta, 0) | ||||
|     if transducer.Location == "Top": | ||||
|         YL += np.int32(transducer.CenterOffset * Scenario.Pixel_mm * Ratio) | ||||
|     elif transducer.Location == "Left": | ||||
|         XL += np.int32(transducer.CenterOffset * Scenario.Pixel_mm * Ratio) | ||||
| 
 | ||||
|     IR = np.zeros((Ntheta, Ntheta), dtype=np.float32) | ||||
|     B = range(0, Ntheta) | ||||
|     IR[:, 0] = np.int32(B[:]) | ||||
| 
 | ||||
|     for i in range(1, Ntheta): | ||||
|         B = np.roll(B, -1) | ||||
|         IR[:, i] = np.int32(B) | ||||
|      | ||||
|     return XL, YL, IR | ||||
| 
 | ||||
| 
 | ||||
| def borderOffset(XL, YL, Scenario, transducer, Ratio): | ||||
|     if transducer.Location == "Top": | ||||
|         XL[:, 0] += (np.int32(transducer.BorderOffset * Scenario.Pixel_mm * Ratio)) | ||||
|         XL[:, 1] -= (np.int32(transducer.BorderOffset * Scenario.Pixel_mm * Ratio)) | ||||
|     elif transducer.Location == "Left": | ||||
|         YL[:, 0] += (np.int32(transducer.BorderOffset * Scenario.Pixel_mm * Ratio)) | ||||
|         YL[:, 1] -= (np.int32(transducer.BorderOffset * Scenario.Pixel_mm * Ratio)) | ||||
| 
 | ||||
|     return XL, YL | ||||
| 
 | ||||
| 
 | ||||
| def flip(XL): | ||||
|     return np.fliplr(XL) | ||||
| 
 | ||||
| 
 | ||||
| def getReceivers(XL, YL, IR, T, Field): | ||||
|     ReceptorX = (XL) | ||||
|     ReceptorY = (YL) | ||||
|     M, N = np.shape(ReceptorX) | ||||
|     temp = np.zeros((M, N - 1), dtype=np.float32) | ||||
|     for mm in range(0, M): | ||||
|         for ir in range(0, N - 1): | ||||
|             temp[mm, ir] = T[int(ReceptorX[mm, int(IR[0, ir + 1])]), int(ReceptorY[mm, int(IR[0, ir + 1])])] | ||||
|     if Field: | ||||
|         return temp.transpose() | ||||
|     else: | ||||
|         return np.mean(temp, 0) | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user