今天上qq空间看到一个有意思的东西,类似射线的效果

QQ空间评论奥特光线字符:ฏ๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎

可以将这个符号拆解为 喷射塔字符 ฏ 和 超能波字符 ๎ 两部分 

 

这是两个泰文符号,估计是在泰文中会根据种种基于语法等方面的需求,在这类符号上面加一些东西(可能类似我们的汉语拼音声调),因此采用这种编码识别方式。至于它喷得太远了这个问题,猜是因设计者没考虑限定符号头上戴帽子的数量而延续下来的Bug吧。

 

利用UTF-8编码,其中 ฏ 为 &#3599, ๎ 为 &#3662 

将 ฏ 写入txt,保存成html后打开,即显示 ฏ 

输入 ฏ๎ ,显示 ฏ๎ 

输入 ฏ๎๎ ,显示 ฏ๎๎ 

 

根据数学归纳法,可得出结论:

第一个字符为喷射塔字符 ( ฏ ),后边跟着几个超能波字符 ( ๎ ) ,就可以喷出几层波。

 

常见喷射塔字符

ส &#3626

ฏ &#3599

 

常见超能波字符 

็ &#3655 

๎ &#3662

้ &#3657

 

发现含有泰文字符的行 字体会改变。


原文出处:http://www.oicqzone.com/pc/2014113020365.html

下面是一个简单的 C++ 代码实现: ```c++ #include <iostream> #include <cmath> using namespace std; struct Vector3 { double x, y, z; Vector3() {} Vector3(double x, double y, double z) : x(x), y(y), z(z) {} Vector3 operator+(const Vector3& other) const { return Vector3(x + other.x, y + other.y, z + other.z); } Vector3 operator-(const Vector3& other) const { return Vector3(x - other.x, y - other.y, z - other.z); } Vector3 operator*(double scalar) const { return Vector3(x * scalar, y * scalar, z * scalar); } double dot(const Vector3& other) const { return x * other.x + y * other.y + z * other.z; } Vector3 cross(const Vector3& other) const { return Vector3(y * other.z - z * other.y, z * other.x - x * other.z, x * other.y - y * other.x); } double length() const { return sqrt(x * x + y * y + z * z); } }; struct Ray { Vector3 origin, direction; Ray() {} Ray(const Vector3& origin, const Vector3& direction) : origin(origin), direction(direction) {} }; struct Plane { Vector3 point, normal; Plane() {} Plane(const Vector3& point, const Vector3& normal) : point(point), normal(normal) {} }; bool intersect(const Ray& ray, const Plane& plane, double& t) { double denom = plane.normal.dot(ray.direction); if (abs(denom) < 1e-6) // 判断是否平行 return false; t = plane.normal.dot(plane.point - ray.origin) / denom; return t >= 0; } int main() { // 示例:射线由点(0, 0, 0)出发,方向为(1, 1, 1);平面上的一点为(0, 0, 1),法向量为(0, 0, 1) Ray ray(Vector3(0, 0, 0), Vector3(1, 1, 1)); Plane plane(Vector3(0, 0, 1), Vector3(0, 0, 1)); double t; if (intersect(ray, plane, t)) { Vector3 intersection = ray.origin + ray.direction * t; cout << "Intersection point: (" << intersection.x << ", " << intersection.y << ", " << intersection.z << ")" << endl; } else { cout << "No intersection." << endl; } return 0; } ``` 这里我们定义了三个结构体:`Vector3` 表示三维向量,`Ray` 表示射线,`Plane` 表示平面。`intersect` 函数判断射线与平面是否相交,并返回相交参数t。在主函数中,我们给出了一个示例并输出相交点的坐标。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值