Table of Contents

Class CameraParameters

네임스페이스
easyar

camera parameters. image 크기, focal length, principal point, camera 유형, device natural orientation 기준 camera 회전 각도를 포함합니다.

CameraParameters

생성자

CameraParameters

void easyar_CameraParameters__ctor(easyar_Vec2I imageSize, easyar_Vec2F focalLength, easyar_Vec2F principalPoint, easyar_CameraDeviceType cameraDeviceType, int cameraOrientation, easyar_CameraParameters * * Return)
CameraParameters(Vec2I imageSize, Vec2F focalLength, Vec2F principalPoint, CameraDeviceType cameraDeviceType, int cameraOrientation)
public CameraParameters(@Nonnull Vec2I imageSize, @Nonnull Vec2F focalLength, @Nonnull Vec2F principalPoint, int cameraDeviceType, int cameraOrientation)
constructor(imageSize: Vec2I, focalLength: Vec2F, principalPoint: Vec2F, cameraDeviceType: Int, cameraOrientation: Int)
+ (easyar_CameraParameters *) create:(easyar_Vec2I *)imageSize focalLength:(easyar_Vec2F *)focalLength principalPoint:(easyar_Vec2F *)principalPoint cameraDeviceType:(easyar_CameraDeviceType)cameraDeviceType cameraOrientation:(int)cameraOrientation
public convenience init(_ imageSize: Vec2I, _ focalLength: Vec2F, _ principalPoint: Vec2F, _ cameraDeviceType: CameraDeviceType, _ cameraOrientation: Int32)
public CameraParameters(Vec2I imageSize, Vec2F focalLength, Vec2F principalPoint, CameraDeviceType cameraDeviceType, int cameraOrientation)

매개 변수

이름 형식 설명
imageSize Vec2I
focalLength Vec2F
principalPoint Vec2F
cameraDeviceType CameraDeviceType
cameraOrientation Int32

메서드

size

image 크기.

easyar_Vec2I easyar_CameraParameters_size(const easyar_CameraParameters * This)
Vec2I size()
public @Nonnull Vec2I size()
fun size(): Vec2I
- (easyar_Vec2I *)size
public func size() -> Vec2I
public virtual Vec2I size()

반환 값

형식 설명
Vec2I

focalLength

Focal length. camera의 equivalent optical center에서 CCD 평면까지의 거리를 너비와 높이 방향의 unit pixel density로 나눈 값입니다. 단위는 픽셀입니다.

easyar_Vec2F easyar_CameraParameters_focalLength(const easyar_CameraParameters * This)
Vec2F focalLength()
public @Nonnull Vec2F focalLength()
fun focalLength(): Vec2F
- (easyar_Vec2F *)focalLength
public func focalLength() -> Vec2F
public virtual Vec2F focalLength()

반환 값

형식 설명
Vec2F

principalPoint

Principal point. camera의 principal optical axis가 CCD 평면과 만나는 지점에서 image 왼쪽 위 모서리까지의 픽셀 좌표입니다. 단위는 픽셀입니다.

easyar_Vec2F easyar_CameraParameters_principalPoint(const easyar_CameraParameters * This)
Vec2F principalPoint()
public @Nonnull Vec2F principalPoint()
fun principalPoint(): Vec2F
- (easyar_Vec2F *)principalPoint
public func principalPoint() -> Vec2F
public virtual Vec2F principalPoint()

반환 값

형식 설명
Vec2F

cameraModelType

Camera model.

easyar_CameraModelType easyar_CameraParameters_cameraModelType(const easyar_CameraParameters * This)
CameraModelType cameraModelType()
public int cameraModelType()
fun cameraModelType(): Int
- (easyar_CameraModelType)cameraModelType
public func cameraModelType() -> CameraModelType
public virtual CameraModelType cameraModelType()

반환 값

형식 설명
CameraModelType

cameraDeviceType

camera device 유형. default camera, back camera 또는 front camera입니다. 데스크톱 장치는 모두 default camera이고, 모바일 장치는 back camera와 front camera를 구분합니다.

easyar_CameraDeviceType easyar_CameraParameters_cameraDeviceType(const easyar_CameraParameters * This)
CameraDeviceType cameraDeviceType()
public int cameraDeviceType()
fun cameraDeviceType(): Int
- (easyar_CameraDeviceType)cameraDeviceType
public func cameraDeviceType() -> CameraDeviceType
public virtual CameraDeviceType cameraDeviceType()

반환 값

형식 설명
CameraDeviceType

cameraOrientation

device natural orientation에서 camera image를 표시할 때 필요한 시계 방향 회전 각도입니다. 범위는 [0, 360)입니다. Android 휴대폰과 일부 Android 태블릿은 90도입니다. Android 글래스와 일부 Android 태블릿은 0도입니다. 기존 iOS 장치는 모두 90도입니다.

int easyar_CameraParameters_cameraOrientation(const easyar_CameraParameters * This)
int cameraOrientation()
public int cameraOrientation()
fun cameraOrientation(): Int
- (int)cameraOrientation
public func cameraOrientation() -> Int32
public virtual int cameraOrientation()

반환 값

형식 설명
Int32

createWithDefaultIntrinsics

default camera intrinsics로 CameraParameters를 생성합니다. default camera intrinsics(focal length 및 principal point)는 image 크기에 따라 자동으로 계산되지만 특별히 정확하지는 않습니다.

void easyar_CameraParameters_createWithDefaultIntrinsics(easyar_Vec2I imageSize, easyar_CameraDeviceType cameraDeviceType, int cameraOrientation, easyar_CameraParameters * * Return)
static std::shared_ptr<CameraParameters> createWithDefaultIntrinsics(Vec2I imageSize, CameraDeviceType cameraDeviceType, int cameraOrientation)
public static @Nonnull CameraParameters createWithDefaultIntrinsics(@Nonnull Vec2I imageSize, int cameraDeviceType, int cameraOrientation)
companion object fun createWithDefaultIntrinsics(imageSize: Vec2I, cameraDeviceType: Int, cameraOrientation: Int): CameraParameters
+ (easyar_CameraParameters *)createWithDefaultIntrinsics:(easyar_Vec2I *)imageSize cameraDeviceType:(easyar_CameraDeviceType)cameraDeviceType cameraOrientation:(int)cameraOrientation
public static func createWithDefaultIntrinsics(_ imageSize: Vec2I, _ cameraDeviceType: CameraDeviceType, _ cameraOrientation: Int32) -> CameraParameters
public static CameraParameters createWithDefaultIntrinsics(Vec2I imageSize, CameraDeviceType cameraDeviceType, int cameraOrientation)

매개 변수

이름 형식 설명
imageSize Vec2I
cameraDeviceType CameraDeviceType
cameraOrientation Int32

반환 값

형식 설명
CameraParameters

tryCreateWithCustomIntrinsics

custom camera intrinsics로 CameraParameters를 생성합니다. camera intrinsics(focal length, principal point, distortion coefficients)와 camera model을 지정해야 합니다. 지원되는 camera model은 CameraModelType을 참고하십시오. 참고: 이 인터페이스는 신중하게 사용하십시오. 입력 데이터가 잘못되면 객체 생성이 실패하고 empty가 반환될 수 있습니다.

void easyar_CameraParameters_tryCreateWithCustomIntrinsics(easyar_Vec2I imageSize, easyar_ListOfFloat * cameraParamList, easyar_CameraModelType cameraModel, easyar_CameraDeviceType cameraDeviceType, int cameraOrientation, easyar_OptionalOfCameraParameters * Return)
static std::optional<std::shared_ptr<CameraParameters>> tryCreateWithCustomIntrinsics(Vec2I imageSize, std::vector<float> cameraParamList, CameraModelType cameraModel, CameraDeviceType cameraDeviceType, int cameraOrientation)
public static @Nullable CameraParameters tryCreateWithCustomIntrinsics(@Nonnull Vec2I imageSize, java.util.@Nonnull ArrayList<java.lang.@Nonnull Float> cameraParamList, int cameraModel, int cameraDeviceType, int cameraOrientation)
companion object fun tryCreateWithCustomIntrinsics(imageSize: Vec2I, cameraParamList: ArrayList<Float>, cameraModel: Int, cameraDeviceType: Int, cameraOrientation: Int): CameraParameters?
+ (easyar_CameraParameters *)tryCreateWithCustomIntrinsics:(easyar_Vec2I *)imageSize cameraParamList:(NSArray<NSNumber *> *)cameraParamList cameraModel:(easyar_CameraModelType)cameraModel cameraDeviceType:(easyar_CameraDeviceType)cameraDeviceType cameraOrientation:(int)cameraOrientation
public static func tryCreateWithCustomIntrinsics(_ imageSize: Vec2I, _ cameraParamList: [Float], _ cameraModel: CameraModelType, _ cameraDeviceType: CameraDeviceType, _ cameraOrientation: Int32) -> CameraParameters?
public static Optional<CameraParameters> tryCreateWithCustomIntrinsics(Vec2I imageSize, List<float> cameraParamList, CameraModelType cameraModel, CameraDeviceType cameraDeviceType, int cameraOrientation)

매개 변수

이름 형식 설명
imageSize Vec2I
cameraParamList List<Single>
cameraModel CameraModelType
cameraDeviceType CameraDeviceType
cameraOrientation Int32

반환 값

형식 설명
Optional<>

getResized

camera image 크기가 변경된 후의 동등한 CameraParameters를 가져옵니다.

void easyar_CameraParameters_getResized(easyar_CameraParameters * This, easyar_Vec2I imageSize, easyar_CameraParameters * * Return)
std::shared_ptr<CameraParameters> getResized(Vec2I imageSize)
public @Nonnull CameraParameters getResized(@Nonnull Vec2I imageSize)
fun getResized(imageSize: Vec2I): CameraParameters
- (easyar_CameraParameters *)getResized:(easyar_Vec2I *)imageSize
public func getResized(_ imageSize: Vec2I) -> CameraParameters
public virtual CameraParameters getResized(Vec2I imageSize)

매개 변수

이름 형식 설명
imageSize Vec2I

반환 값

형식 설명
CameraParameters

imageOrientation

image가 screen에 맞춰 정렬되도록 screen을 기준으로 시계 방향으로 회전해야 하는 각도를 계산합니다. screenRotation은 natural orientation을 기준으로 한 screen image의 시계 방향 회전 각도입니다. iOS의 경우: * UIInterfaceOrientationPortrait: screenRotation = 0 * UIInterfaceOrientationLandscapeRight: screenRotation = 90 * UIInterfaceOrientationPortraitUpsideDown: screenRotation = 180 * UIInterfaceOrientationLandscapeLeft: screenRotation = 270 Android의 경우: * Surface.ROTATION_0: screenRotation = 0 * Surface.ROTATION_90: screenRotation = 90 * Surface.ROTATION_180: screenRotation = 180 * Surface.ROTATION_270: screenRotation = 270

int easyar_CameraParameters_imageOrientation(const easyar_CameraParameters * This, int screenRotation)
int imageOrientation(int screenRotation)
public int imageOrientation(int screenRotation)
fun imageOrientation(screenRotation: Int): Int
- (int)imageOrientation:(int)screenRotation
public func imageOrientation(_ screenRotation: Int32) -> Int32
public virtual int imageOrientation(int screenRotation)

매개 변수

이름 형식 설명
screenRotation Int32

반환 값

형식 설명
Int32

imageHorizontalFlip

image에 horizontal flipping이 필요한지 계산합니다. image 렌더링 시 먼저 회전한 다음 flipping합니다. cameraDeviceType이 front camera이면 flipping이 자동으로 수행됩니다. manualHorizontalFlip을 전달하면 그 위에 수동 flipping을 한 번 더 적용할 수 있습니다.

bool easyar_CameraParameters_imageHorizontalFlip(const easyar_CameraParameters * This, bool manualHorizontalFlip)
bool imageHorizontalFlip(bool manualHorizontalFlip)
public boolean imageHorizontalFlip(boolean manualHorizontalFlip)
fun imageHorizontalFlip(manualHorizontalFlip: Boolean): Boolean
- (bool)imageHorizontalFlip:(bool)manualHorizontalFlip
public func imageHorizontalFlip(_ manualHorizontalFlip: Bool) -> Bool
public virtual bool imageHorizontalFlip(bool manualHorizontalFlip)

매개 변수

이름 형식 설명
manualHorizontalFlip Boolean

반환 값

형식 설명
Boolean

projection

virtual objects를 렌더링하는 데 필요한 perspective projection matrix를 계산하여 camera coordinate system의 점을 clip coordinate system ([-1, 1]^4)으로 변환합니다. z축 주위의 회전도 포함합니다. perspective projection matrix의 형식은 OpenGL과 동일합니다. matrix는 Direct3D처럼 왼쪽에서 곱하지 않고, 점의 동차 좌표 column vector에 오른쪽에서 곱합니다. 데이터는 row-major 순서로 배열되며 OpenGL의 column-major와 반대입니다. clip coordinate system 및 normalized device coordinate system의 정의는 OpenGL 기본값과 동일합니다.

easyar_Matrix44F easyar_CameraParameters_projection(const easyar_CameraParameters * This, float nearPlane, float farPlane, float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip)
Matrix44F projection(float nearPlane, float farPlane, float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip)
public @Nonnull Matrix44F projection(float nearPlane, float farPlane, float viewportAspectRatio, int screenRotation, boolean combiningFlip, boolean manualHorizontalFlip)
fun projection(nearPlane: Float, farPlane: Float, viewportAspectRatio: Float, screenRotation: Int, combiningFlip: Boolean, manualHorizontalFlip: Boolean): Matrix44F
- (easyar_Matrix44F *)projection:(float)nearPlane farPlane:(float)farPlane viewportAspectRatio:(float)viewportAspectRatio screenRotation:(int)screenRotation combiningFlip:(bool)combiningFlip manualHorizontalFlip:(bool)manualHorizontalFlip
public func projection(_ nearPlane: Float, _ farPlane: Float, _ viewportAspectRatio: Float, _ screenRotation: Int32, _ combiningFlip: Bool, _ manualHorizontalFlip: Bool) -> Matrix44F
public virtual Matrix44F projection(float nearPlane, float farPlane, float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip)

매개 변수

이름 형식 설명
nearPlane Single
farPlane Single
viewportAspectRatio Single
screenRotation Int32
combiningFlip Boolean
manualHorizontalFlip Boolean

반환 값

형식 설명
Matrix44F

imageProjection

camera background image를 렌더링하는 데 필요한 orthographic projection matrix를 계산하여 image rectangle coordinate system ([-1, 1]^2)의 점을 clip coordinate system ([-1, 1]^4)으로 변환합니다. z축 주위의 회전도 포함하며, 정의되지 않은 두 차원은 변경되지 않습니다. orthographic projection matrix의 형식은 OpenGL과 동일합니다. matrix는 Direct3D처럼 왼쪽에서 곱하지 않고, 점의 동차 좌표에 오른쪽에서 곱합니다. 데이터는 row-major 순서로 배열되며 OpenGL의 column-major와 반대입니다. clip coordinate system 및 normalized device coordinate system의 정의는 OpenGL 기본값과 동일합니다.

easyar_Matrix44F easyar_CameraParameters_imageProjection(const easyar_CameraParameters * This, float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip)
Matrix44F imageProjection(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip)
public @Nonnull Matrix44F imageProjection(float viewportAspectRatio, int screenRotation, boolean combiningFlip, boolean manualHorizontalFlip)
fun imageProjection(viewportAspectRatio: Float, screenRotation: Int, combiningFlip: Boolean, manualHorizontalFlip: Boolean): Matrix44F
- (easyar_Matrix44F *)imageProjection:(float)viewportAspectRatio screenRotation:(int)screenRotation combiningFlip:(bool)combiningFlip manualHorizontalFlip:(bool)manualHorizontalFlip
public func imageProjection(_ viewportAspectRatio: Float, _ screenRotation: Int32, _ combiningFlip: Bool, _ manualHorizontalFlip: Bool) -> Matrix44F
public virtual Matrix44F imageProjection(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip)

매개 변수

이름 형식 설명
viewportAspectRatio Single
screenRotation Int32
combiningFlip Boolean
manualHorizontalFlip Boolean

반환 값

형식 설명
Matrix44F

screenCoordinatesFromImageCoordinates

image coordinate system ([0, 1]^2)에서 screen coordinate system ([0, 1]^2)으로 변환합니다. 두 coordinate system 모두 x는 오른쪽, y는 아래쪽을 향하고 origin은 왼쪽 위 모서리에 있습니다.

easyar_Vec2F easyar_CameraParameters_screenCoordinatesFromImageCoordinates(const easyar_CameraParameters * This, float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip, easyar_Vec2F imageCoordinates)
Vec2F screenCoordinatesFromImageCoordinates(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip, Vec2F imageCoordinates)
public @Nonnull Vec2F screenCoordinatesFromImageCoordinates(float viewportAspectRatio, int screenRotation, boolean combiningFlip, boolean manualHorizontalFlip, @Nonnull Vec2F imageCoordinates)
fun screenCoordinatesFromImageCoordinates(viewportAspectRatio: Float, screenRotation: Int, combiningFlip: Boolean, manualHorizontalFlip: Boolean, imageCoordinates: Vec2F): Vec2F
- (easyar_Vec2F *)screenCoordinatesFromImageCoordinates:(float)viewportAspectRatio screenRotation:(int)screenRotation combiningFlip:(bool)combiningFlip manualHorizontalFlip:(bool)manualHorizontalFlip imageCoordinates:(easyar_Vec2F *)imageCoordinates
public func screenCoordinatesFromImageCoordinates(_ viewportAspectRatio: Float, _ screenRotation: Int32, _ combiningFlip: Bool, _ manualHorizontalFlip: Bool, _ imageCoordinates: Vec2F) -> Vec2F
public virtual Vec2F screenCoordinatesFromImageCoordinates(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip, Vec2F imageCoordinates)

매개 변수

이름 형식 설명
viewportAspectRatio Single
screenRotation Int32
combiningFlip Boolean
manualHorizontalFlip Boolean
imageCoordinates Vec2F

반환 값

형식 설명
Vec2F

imageCoordinatesFromScreenCoordinates

screen coordinate system ([0, 1]^2)에서 image coordinate system ([0, 1]^2)으로 변환합니다. 두 coordinate system 모두 x는 오른쪽, y는 아래쪽을 향하고 origin은 왼쪽 위 모서리에 있습니다.

easyar_Vec2F easyar_CameraParameters_imageCoordinatesFromScreenCoordinates(const easyar_CameraParameters * This, float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip, easyar_Vec2F screenCoordinates)
Vec2F imageCoordinatesFromScreenCoordinates(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip, Vec2F screenCoordinates)
public @Nonnull Vec2F imageCoordinatesFromScreenCoordinates(float viewportAspectRatio, int screenRotation, boolean combiningFlip, boolean manualHorizontalFlip, @Nonnull Vec2F screenCoordinates)
fun imageCoordinatesFromScreenCoordinates(viewportAspectRatio: Float, screenRotation: Int, combiningFlip: Boolean, manualHorizontalFlip: Boolean, screenCoordinates: Vec2F): Vec2F
- (easyar_Vec2F *)imageCoordinatesFromScreenCoordinates:(float)viewportAspectRatio screenRotation:(int)screenRotation combiningFlip:(bool)combiningFlip manualHorizontalFlip:(bool)manualHorizontalFlip screenCoordinates:(easyar_Vec2F *)screenCoordinates
public func imageCoordinatesFromScreenCoordinates(_ viewportAspectRatio: Float, _ screenRotation: Int32, _ combiningFlip: Bool, _ manualHorizontalFlip: Bool, _ screenCoordinates: Vec2F) -> Vec2F
public virtual Vec2F imageCoordinatesFromScreenCoordinates(float viewportAspectRatio, int screenRotation, bool combiningFlip, bool manualHorizontalFlip, Vec2F screenCoordinates)

매개 변수

이름 형식 설명
viewportAspectRatio Single
screenRotation Int32
combiningFlip Boolean
manualHorizontalFlip Boolean
screenCoordinates Vec2F

반환 값

형식 설명
Vec2F

equalsTo

두 parameter 세트가 같은지 판단합니다.

bool easyar_CameraParameters_equalsTo(const easyar_CameraParameters * This, easyar_CameraParameters * other)
bool equalsTo(std::shared_ptr<CameraParameters> other)
public boolean equalsTo(@Nonnull CameraParameters other)
fun equalsTo(other: CameraParameters): Boolean
- (bool)equalsTo:(easyar_CameraParameters *)other
public func equalsTo(_ other: CameraParameters) -> Bool
public virtual bool equalsTo(CameraParameters other)

매개 변수

이름 형식 설명
other CameraParameters

반환 값

형식 설명
Boolean