【C++】XYZ系列——Vector3类模板(仿Unity实现)

序言

随着Unity技术的全球性大规模普及,其API的易用性得到了越来越多的开发者的青睐。

本篇在D子宇的工作基础上,仿照Unity的类结构,将其拓展转换为C++类模板。

以便在其它C++工程中更加方便使用。

源代码地址:https://github.com/duzixi/XYZ

博文首发:https://www.csdn.net/duzixi


源代码

Vector3.h

//
//  Vector3.h
//  XYZ
//  三维空间常用类模板C++实现。封装了三维空间向量的常用成员与方法。
//
//  Created by 杜子兮(duzixi[at]gmail[dot]com) on 18-4-7.
//  Copyright (c) 2018年 www.duzixi.com All rights reserved.
//

#pragma once

using namespace std;

namespace XYZ {

	template <class T>
	class Vector3
	{
	public:
		T x;
		T y;
		T z;
		// 构造函数 ==============================
		Vector3();
		Vector3(T _x, T _y);
		Vector3(T _x, T _y, T _z);
		// 析构函数
		~Vector3();

		// 属性====================================
		// 常用向量
		/* 本类采用坐标系如下:
		y
		^
		|
		|   俯视图        z轴垂直屏幕朝上
		|
		o-----------> x
		*/
		// (0, -1, 0)
		static Vector3<T> back;
		// (0, 0, -1)
		static Vector3<T> down;
		// (0, 1, 0)
		static Vector3<T> forward;
		// (0, 1, 0)
		static Vector3<T> fwd;
		// (-1, 0, 0)
		static Vector3<T> left;
		// (1, 1, 1)
		static Vector3<T> one;
		// (1, 0, 0)
		static Vector3<T> right;
		// (0, 0, 1)
		static Vector3<T> up;
		// (0, 0, 0)
		static Vector3<T> zero;

		// 模的平方
		T sqrMagnitude;

		// 模
		T magnitude;

		// 类方法 ===============================

		// 点乘
		static T Dot(Vector3<T> lhs, Vector3<T> rhs);
		// 叉乘
		static Vector3<T> Cross(Vector3<T> lhs, Vector3<T> rhs);
		// 距离
		static T Distance(Vector3<T> a, Vector3<T> b);
		// 单位化
		static Vector3<T> Normalize(Vector3<T> value);

		// 夹角大小
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值