{"id":16384761,"url":"https://github.com/saber2pr/vector","last_synced_at":"2025-02-22T02:44:12.690Z","repository":{"id":108571653,"uuid":"164659927","full_name":"Saber2pr/vector","owner":"Saber2pr","description":"math/vector2D|3D lib for javascript!","archived":false,"fork":false,"pushed_at":"2019-04-10T05:24:38.000Z","size":22,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-06T09:38:22.906Z","etag":null,"topics":["angle","math","typescript","vector","vector2d","vector3d"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Saber2pr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-08T13:55:27.000Z","updated_at":"2019-06-23T06:52:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"4f32afe8-6b0f-434e-8570-5883d052ef0f","html_url":"https://github.com/Saber2pr/vector","commit_stats":null,"previous_names":["saber2pr/saber-vector"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Saber2pr%2Fvector","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Saber2pr%2Fvector/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Saber2pr%2Fvector/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Saber2pr%2Fvector/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Saber2pr","download_url":"https://codeload.github.com/Saber2pr/vector/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240118329,"owners_count":19750471,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angle","math","typescript","vector","vector2d","vector3d"],"created_at":"2024-10-11T04:12:18.090Z","updated_at":"2025-02-22T02:44:12.685Z","avatar_url":"https://github.com/Saber2pr.png","language":"TypeScript","readme":"# saber-vector\n\n[![npm](https://img.shields.io/npm/v/saber-vector.svg)](https://www.npmjs.com/package/saber-vector)\n\n\u003e math/vector lib for javascript!\n\n```bash\nnpm install saber-vector\n```\n\n# API\n\n## angleToRad\n\n角度转弧度\n\n```ts\nangleToRad(90) // 1.5707963267948966\n```\n\n## radToAngle\n\n弧度转角度\n\n```ts\nradToAngle(Math.PI / 2) // 90\n```\n\n## magnitude2d\n\n求 2d 向量的模\n\n```ts\nmagnitude2d(3, 4) // 5\n```\n\n## magnitude3d\n\n求 3d 向量的模\n\n```ts\nmagnitude3d(1, 2, 2) // 3\n```\n\n## Vec2\n\n2d 坐标类型\n\n构造函数：\n\n```ts\nnew Vec2(x, y)\n```\n\n方法：\n\n\u003e 注意：以下方法均为纯函数\n\n1. props 获取所有坐标属性\n2. equals 判断两个向量是否相等\n3. add 向量和\n4. sub 向量差\n5. mul 向量乘\n6. div 向量除\n7. scale 向量缩放\n8. neg 向量取反\n9. mag 返回向量的模\n10. angleWith 与另一个向量夹角\n11. dot 向量数量积\n12. cross 向量叉积\n13. unitized 单位化\n\n## Vec3\n\n3d 坐标类型\n\n构造函数：\n\n```ts\nnew Vec3(x, y, z)\n```\n\n方法：...同 Vec2\n\n## Line2D\n\n二维有向线段\n\n构造函数：\n\n```ts\nnew Line2D(start_vec2, end_vec2)\n```\n\n方法：\n\n\u003e 注意：以下方法均为纯函数\n\n1. projection 在另一个二维有向线段上的投影\n2. toVec 转为 Vec2 类型\n\n## Line3D\n\n三维有向线段\n\n构造函数：\n\n```ts\nnew Line3D(start_vec3, end_vec3)\n```\n\n方法：...同 Line2D\n\n# Examples\n\n```ts\nlet start_3d = new Vector3D(0, 0, 0)\n\nlet end1_3d = new Vector3D(0, 1, 0)\nlet line1_3d = new Line3D(start_3d, end1_3d)\n\nlet end2_3d = new Vector3D(0, 1, 1)\nlet line2_3d = new Line3D(start_3d, end2_3d)\n\n// v.neg().neg()\nconsole.log(\n  end2_3d\n    .neg()\n    .neg()\n    .isEquals(end2_3d)\n) // true\n\n// get angle in two vectors?\nconsole.log(radToAngle(line1_3d.toVec().angleWith(line2_3d.toVec()))) // 45\n\n// get props of vector?\nconsole.log(line1_3d.toVec().props())\n\n// get line's projection on line2?\nconsole.log(\n  line1_3d\n    .projection(line2_3d)\n    .toVec()\n    .props()\n)\n\n// same to 2d\nlet start_2d = new Vector2D(0, 0)\n\nlet end1_2d = new Vector2D(0, 1)\nlet line1_2d = new Line2D(start_2d, end1_2d)\n\nlet end2_2d = new Vector2D(1, 1)\nlet line2_2d = new Line2D(start_2d, end2_2d)\n\nconsole.log('2d: ', radToAngle(line1_2d.toVec().angleWith(line2_2d.toVec())))\nconsole.log(\n  line1_2d\n    .projection(line2_2d)\n    .toVec()\n    .props()\n)\nconsole.log(\n  end2_2d\n    .neg()\n    .neg()\n    .isEquals(end2_2d)\n) // true\n```\n\n# Author\n\nsaber2pr\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaber2pr%2Fvector","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsaber2pr%2Fvector","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaber2pr%2Fvector/lists"}