乒乓球
小麓霏睡前叨叨
一个乒乓球,两个乒乓球
一个是黑的,一个是白的
拍拍拍拍
拍成一块一块的
编辑文章✏
js HtmlSpecialChars 函数把预定义的字符转换为 HTML 实体
js 造轮子 HtmlSpecialChars 函数把预定义的字符转换为 HTML 实体
12345678910111213141516171819202122232425262728class HtmlSpecialChars { constructor() { this.myCodeMap = { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', }; } // 编码 encoded(text) { for (let key in this.myCodeMap) { ...
根据地图经纬度绘制 canvas 电子围栏-2
使用 scale(1,-1),以 y 轴作为对称轴镜像反转, 就可得到著名的笛卡尔坐标系,左下角为原点
参考 MDN Web Docs:缩放 Scaling
使用 translate(0,canvas.height); scale(1,-1); 以 y 轴作为对称轴镜像反转, 就可得到著名的 笛卡尔坐标系 ,左下角为原点
因此,修改 第一版的代码 ,更改部分如下
12345678910111213141516171819202122// y轴的偏移量不同let xoffset = xMin * scale - canvasWidth / 3 / 2;let yoffset = yMax * scale - (canvasHeight / 3 / 2) * 5;//以y轴作为对称轴镜像反转, 就可得到著名的笛卡尔坐标系,左下角为原点ctx.translate(-xoffset, canvasHeight + yoffset); // ctx.font = '14px Arial'; ctx.strokeText(`坐标原点:${xoffset / ...
根据地图经纬度绘制 canvas 电子围栏-1
地图上的一小寸,是人类实际跨越的一大大大大……步
根据地图经纬度绘制 canvas 电子围栏第二版代码根据地图经纬度绘制 canvas 电子围栏【2】
画个坐标轴
坐标转换把输入的经纬度坐标转换为显示在 canvas 上的坐标
坐标放大地图上的一小寸,是人类实际跨越的一大大大大……步
比如 A [39.075069,117.22905] 和 B [39.074902,117.22673] ,两个坐标点的值相差的量级只有 0.001。
而 canvas 是最小显示是1像素。
所以要把坐标放大,比如 100 万倍: 39.075069117 × 1000000 - 39.074902117 × 1000000 = 167,就可以在 canvas 上显示出两个点的距离了。
1234// 转换 并 放大 原始坐标area = area.map(p => { return [p.x * scale + x0, (y0 - p.y) * scale];});
这样,解决了坐标值的差距问题,又出现了另一个问题:_ 看不见点了!_
因为 canvas 的 ...
js判断点是否在多边形内部
js 运用用射线法判断点是否在多边形内部,该法中常用水平扫描线法或垂直线法来判断一点是否在区域内。假若有一疑问点,要判斯它是否在多边形内,可从该疑问点向左引水平扫描线(即射线)。
判断点是否在多边形内部射线法射线法。该法中常用水平扫描线法或垂直线法来判断一点是否在区域内。假若有一疑问点 P(x0,y0),要判斯它是否在多边形内,可从该疑问点向左引水平扫描线(即射线)。
引申 射线法
前提:多边形是用顺序的点坐标表示。
多边形各个边 是 线段(端点属于此边),两端点坐标已知 A(xa,ya) 和 B(xb,yb),可以求得线段的表达式。
以疑问点 P(x0,y0),作一条水平线 y=y0, 如果 ya ≤ y0 ≤ yb,则水平线与线段AB相交,否则不相交。
若相交,求交点坐标 J(xj,yj), 已知yj = y0,则 xj = ((y0 - ya) / (yb - ya)) * (xb - xa) + xa a. xj = x0 , P 与 J 重合,即 点在线上,返回 1,结束;b. xj < x0 , J 在 P 左侧,则 left++;c. xj & ...
前端跨域:一步一步实现本地 node 代理转发请求实现跨域访问API
一步一步实现本地 node 代理转发请求实现跨域访问 API
前端跨域vue-cli 跨域一般设置 vue.config.js 里的 devServer.proxy , 本质是构建一个开发环境下的本地 node 服务器,进行请求转发
生产跨域前后端未分离时,一般不会有跨域问题;在分离布署下,前端服务器一般是使用 Nginx 转发请求,少数是在 api 服务器上设置 Access-Control-Allow-Origin
花式跨域
postMessage (推荐)
jsonp
其它
一步一步实现本地 node 代理转发请求1. node 下载与安装Node.js 安装配置
2. 安装 Express 框架 方便构建 web 服务1npm install express --save
3. 安装 express-http-proxy 代理插件1npm install express-http-proxy --save
4. 入口文件 index.js12345678910111213141516171819202122232425262728293031var express = ...
leetcode-34-在排序数组中查找元素的第一个和最后一个位置
leetcode 第 34 题:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位
34. 搜索插入位置给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。
如果数组中不存在目标值 target,返回 [-1, -1]。
来源:力扣(LeetCode)链接:力扣 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
1234567891011/**- @param {number[]} nums- @param {number} tar- @return {number[]}*/var searchRange = function(nums, tar) { let len = nums.length; let l= -1, r = -1; for(let i=0; i
编辑文章✏
leetcode-35-搜索插入位置
leetcode 第 35 题:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
35. 搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。
来源:力扣(LeetCode)
链接:力扣
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
12345678910111213141516171819202122var searchInsert = function (nums, tar) { let l = 0, r = nums.length - 1, ans = nums.length; while (l <= r) { const mid = l + Math.floor((r - l) >> 1); if (tar > nums[mid]) { l = mid + ...
小麓霏背古诗
d58f8b236d585d4fe898e0d443accd24ca05b04dadd9daafc27161ef585d39f33226eb7ef19c4294ab8cf79c62de789ce32bd0007d918af30c67acda1898fa58f0433c0bdbfde4760b779345907f152897d9e9ee06c5a87a23a1f006140f57287a2cf20b4bafc5236ae267d9796940863dad2a47901eb007e3f84e0ae0c5fe77103cedd1675b1226202c12cbdb18479f837e7c09b71f908dd2ec2a9d38be3bb200048b5c0c454bdc68a4df263faca24ac4ab2245113a2adfd89c3e5ba2c2247090a6aec919c962866b1a6c22444582e4e3eef7f15580ddd125b4d22481784728448b687ed7202412204e62a3b8e4a29135f092b513d7b02a0 ...
leetcode-704-二分查找
leetcode 第 704 题:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍
704. 二分查找给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -
来源:力扣(LeetCode)
链接:力扣
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
1234567891011121314151617var search = function (nums, isTarget) { // 定义isTarget在左闭右闭的区间里,[left, right] let right = nums.length - 1; let left = 0; while (left <= right) { let middle = left + Math.floo ...