>

H5游戏开拓:一笔画

- 编辑:乐百家599手机首页 -

H5游戏开拓:一笔画

H5游戏开采:消灭星星

2018/01/25 · HTML5 · 游戏

原稿出处: 坑坑洼洼实验室   

「消灭星星」是一款很杰出的「化解类游戏」,它的游戏的方法很简短:化解相连通的同色砖块。

乐百家前段 1

H5游戏开拓:一笔画

2017/11/07 · HTML5 · 游戏

初稿出处: 坑坑洼洼实验室   

乐百家前段 2

SQL 演习题答案

Last updated December 5, 2012.

1. 游戏法规

「消灭星星」存在三个本子,不过它们的条条框框除了「关卡分值」有个别出入外,另外的平整都以平等的。笔者介绍的本子的游戏准则整理如下:

1. 色砖布满

  • 10 x 10 的表格
  • 5种颜色 —— 红、绿、蓝,黄,紫
  • 每类色砖个数在钦赐区间内随机
  • 5类色砖在 10 x 10 表格中随便遍布

2. 拔除法规

五个或八个以上同色砖块相连通便是可被解除的砖块。

3. 分值法则

  • 消除总分值 = n * n * 5
  • 奖励总分值 = 3000 – n * n * 20

「n」表示砖块数量。上边是「总」分值的平整,还应该有「单」个砖块的分值准则:

  • 免去砖块得分值 = 10 * i 5
  • 剩余砖块扣分值 = 40 * i 20

「i」表示砖块的索引值(从 0 开头)。轻易地说,单个砖块「得分值」和「扣分值」是一个等差数列。

4. 关卡分值

关卡分值 = 一千 (level – 1) * 三千;「level」即日前关卡数。

5. 过关条件

  • 可祛除色块空头支票
  • 一同分值 >= 当前关卡分值

上面多个规范还要创设游戏才得以过得去。

H5游戏开荒:一笔画

by leeenx on 2017-11-02

一笔画是图论[科普](https://zh.wikipedia.org/wiki/图论)中一个著名的主题素材,它起点于柯阿伯丁堡七桥主题素材[科普](https://zh.wikipedia.org/wiki/柯尼斯堡七桥问题)。物艺术学家欧拉在她1736年登出的杂文《柯格勒诺布尔堡的七桥》中不但化解了七桥难题,也建议了一笔画定理,顺带化解了一笔画难题。用图论的术语来讲,对于三个加以的连通图[科普](https://zh.wikipedia.org/wiki/连通图)留存一条恰好含有全体线段何况未有再一次的路子,这条路线便是「一笔画」。

查找连通图那条路子的经过就是「单笔画」的嬉戏经过,如下:

乐百家前段 3

 

Try searching this page for keywords like 'segmentation' or 'PLY'.

2. MVC 设计情势

小编此次又是行使了 MVC 形式来写「消灭星星」。星星「砖块」的数据结构与种种境况由 Model 实现,游戏的基本在 Model 中达成;View 映射 Model 的扭转并做出相应的作为,它的任务珍视是浮现动画;顾客与游戏的互相由 Control 实现。

从逻辑规划上看,Model 非常重而View 与 Control 相当轻,可是,从代码量上看,View 十分重而 Model 与 Control 绝对非常轻。

打闹的贯彻

「一笔画」的完结不复杂,我把落成进程分成两步:

  1. 底图绘制
  2. 相互绘制

「底图绘制」把连通图以「点线」的款型浮以后画布上,是游戏最轻巧完毕的一对;「交互绘制」是客商绘制解题路线的进度,这么些历程会重若是管理点与点动态成线的逻辑。

一、补充作业一、

 

设有三个关系:

               S(SNO, SNAME, AGE, SEX,Sdept)

               SC(SNO, CNO, GRADE)

               C(CNO, CNAME, TEACHER)

试用关系代数表达式表示下列查询:

 

1、查询学号为S3学生所学课程的课程名与任课教师名。

  

2、查询至少选修LIU老师所教课程中一门课的女生姓名。

3、查询WANG同学不学的课程的课程号。

4、查询至少选修两门课程的学生学号。

5、查询选修课程中包含LIU老师所教全部课程的学生学号。

补充作业二、

 

三个关系同上,试用SQL语言表示下列查询:

 

1、  查询门门课程都及格的学生的学号

方法1:

提示:根据学号分组,就得到每个学生所有的课程成绩,在某个学生这一组成绩里,如果他所有的课程成绩都大于60分则输出该组学生的学号

Select sno frome sc group by sno having(min(grade)>=60)

 

2、查询既有课程大于90分又有课程不及格的学生的学号

自身连接:

Select sno from sc where grade >90 and sno in (select sno from sc where grade<60)

 

3、查询平均分不及格的课程号和平均成绩

Select cno , avg(GRADE) from sc group by cno having avg(grade)<60

查询平均分及格的课程号和课程名

Select C.cno , Cname from SC,C where C.cno=SC.cno group by C.cno having avg(grade)>=60

 

4、找出至少选修了2号学生选修过的全部课程的学生号

提示:不存在这样的课程y,学生2选修了y,而学生x没有选。

SELECT DISTINCT Sno

   FROM SC as SCX

   WHERE NOT EXISTS

      (SELECT *

       FROM SC as SCY

       WHERE SCY.Sno =‘2’AND NOT EXISTS

                               (SELECT *

                                  FROM SC SCZ

                          WHERE SCZ.Sno=SCX.Sno AND SCZ.Cno=SCY.Cno))



5、求各门课程去掉一个最高分和最低分后的平均分

第一步,求所有成绩的平均分(去掉一个最高分和最低分)

select   avg(GRADE)   from   SC       where   GRADE   not   in (select   top   1   GRADE   from   SC order   by   GRADE)     and     GRADE   not   in (select   top   1   GRADE   from   SC order   by   GRADE   desc)  

第二步,将所有成绩按各门课程的课程号CNO分组

SELECT CNO avg(GRADE)   from   SC       where   GRADE   not   in (select   top  1  GRADE   from   SC order   by   GRADE)     and     GRADE   not   in (select   top  1  GRADE   from   SC order   by   GRADE   desc) group by CNO

If you would like to contribute links, please e-mail them torms@dgp.toronto.edu.

3. Model

10 x 10 的表格用长度为 100 的数组可周详映射游戏的星星点点「砖块」。

[ R, R, G, G, B, B, Y, Y, P, P, R, R, G, G, B, B, Y, Y, P, P, R, R, G, G, B, B, Y, Y, P, P, R, R, G, G, B, B, Y, Y, P, P, R, R, G, G, B, B, Y, Y, P, P, R, R, G, G, B, B, Y, Y, P, P, R, R, G, G, B, B, Y, Y, P, P, R, R, G, G, B, B, Y, Y, P, P, R, R, G, G, B, B, Y, Y, P, P, R, R, G, G, B, B, Y, Y, P, P ]

1
2
3
4
5
6
7
8
9
10
11
12
[
R, R, G, G, B, B, Y, Y, P, P,
R, R, G, G, B, B, Y, Y, P, P,
R, R, G, G, B, B, Y, Y, P, P,
R, R, G, G, B, B, Y, Y, P, P,
R, R, G, G, B, B, Y, Y, P, P,
R, R, G, G, B, B, Y, Y, P, P,
R, R, G, G, B, B, Y, Y, P, P,
R, R, G, G, B, B, Y, Y, P, P,
R, R, G, G, B, B, Y, Y, P, P,
R, R, G, G, B, B, Y, Y, P, P
]

Odyssey – 淡北京蓝,G – 藤黄,B – 雪白,Y – 赤褐,P – 牡蛎白。Model 的基本职务是以下多个:

  • 变迁砖墙
  • 清除砖块 (生成砖块分值)
  • 做实砖墙
  • 消除残砖 (生成奖赏分值)

底图绘制

「一笔画」是多关卡的游艺形式,作者决定把关卡(连通图)的定制以两个配备接口的款式对外暴光。对外暴光关卡接口需求有一套描述连通图形状的行业内部,而在作者前面有八个挑选:

  • 点记法
  • 线记法

举个连通图 —— 五角星为例来讲一下那三个选项。

乐百家前段 4

点记法如下:

JavaScript

levels: [ // 当前关卡 { name: "五角星", coords: [ {x: Ax, y: Ay}, {x: Bx, y: By}, {x: Cx, y: Cy}, {x: Dx, y: Dy}, {x: Ex, y: Ey}, {x: Ax, y: Ay} ] } ... ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
levels: [
// 当前关卡
{
name: "五角星",
coords: [
{x: Ax, y: Ay},
{x: Bx, y: By},
{x: Cx, y: Cy},
{x: Dx, y: Dy},
{x: Ex, y: Ey},
{x: Ax, y: Ay}
]
}
...
]

线记法如下:

JavaScript

levels: [ // 当前关卡 { name: "五角星", lines: [ {x1: Ax, y1: Ay, x2: Bx, y2: By}, {x1: Bx, y1: By, x2: Cx, y2: Cy}, {x1: Cx, y1: Cy, x2: Dx, y2: Dy}, {x1: Dx, y1: Dy, x2: Ex, y2: Ey}, {x1: Ex, y1: Ey, x2: Ax, y2: Ay} ] } ]

1
2
3
4
5
6
7
8
9
10
11
12
13
levels: [
// 当前关卡
{
name: "五角星",
lines: [
{x1: Ax, y1: Ay, x2: Bx, y2: By},
{x1: Bx, y1: By, x2: Cx, y2: Cy},
{x1: Cx, y1: Cy, x2: Dx, y2: Dy},
{x1: Dx, y1: Dy, x2: Ex, y2: Ey},
{x1: Ex, y1: Ey, x2: Ax, y2: Ay}
]
}
]

「点记法」记录关卡通过海关的一个答案,即端点要按自然的各样存放到数组 coords中,它是有序性的笔录。「线记法」通过两点描述连通图的线条,它是冬辰的笔录。「点记法」最大的优势是显现更简洁,但它必得记录三个通过海关答案,我只是关卡的苦力不是关卡成立者,所以作者最后摘取了「线记法」。:)

 

Papers & Archives

3.1 生成砖墙

砖墙分两步生成:

  • 色砖数量分配
  • 打散色砖

反驳上,能够将 100 个格子可以均分到 5 类颜色,但是作者玩过的「消灭星星」都不使用均分政策。通过深入分析四款「消灭星星」,其实能够窥见四个原理 —— 「色砖之间的数额差在一个稳住的区间内」。

借使把古板意义上的均分称作「完全均分」,那么「消灭星星」的分红是一种在均分线上下波动的「不完全均分」。

乐百家前段 5

我把上边的「不完全均分」称作「波动均分」,算法的现实贯彻能够崇敬「不定均分算法」。

「打散色砖」其实便是将数组乱序的历程,作者推荐应用「 费雪耶兹乱序算法」。

以下是伪代码的落实:

JavaScript

// 波动均分色砖 waveaverage(5, 4, 4).forEach( // tiles 即色墙数组 (count, clr) => tiles.concat(generateTiles(count, clr)); ); // 打垮色砖 shuffle(tiles);

1
2
3
4
5
6
7
// 波动均分色砖
waveaverage(5, 4, 4).forEach(
// tiles 即色墙数组
(count, clr) => tiles.concat(generateTiles(count, clr));
);
// 打散色砖
shuffle(tiles);

互相绘制

在画布上制图路线,从视觉上就是「接纳或三番五次连通图端点」的长河,那些进度须要化解2个难题:

  • 手指下是不是有端点
  • 入选点到待选中式茶食时期是不是成线

征集连通图端点的坐标,再监听手指滑过的坐标可以领略「手指下是不是有一点点」。以下伪代码是访问端点坐标:

JavaScript

// 端点坐标音信 let coords = []; lines.forEach(({x1, y1, x2, y2}) => { // (x1, y1) 在 coords 数组官样文章 if(!isExist(x1, y1)) coords.push([x1, y1]); // (x2, y2) 在 coords 数组不设有 if(!isExist(x2, y2)) coords.push([x2, y2]); });

1
2
3
4
5
6
7
8
// 端点坐标信息
let coords = [];
lines.forEach(({x1, y1, x2, y2}) => {
// (x1, y1) 在 coords 数组不存在
if(!isExist(x1, y1)) coords.push([x1, y1]);
// (x2, y2) 在 coords 数组不存在
if(!isExist(x2, y2)) coords.push([x2, y2]);
});

以下伪代码是监听手指滑动:

JavaScript

easel.addEventListener("touchmove", e => { let x0 = e.targetTouches[0].pageX, y0 = e.targetTouches[0].pageY; // 端点半径 ------ 取连通图端点半径的2倍,提高活动端体验 let r = radius * 2; for(let [x, y] of coords){ if(Math.sqrt(Math.pow(x - x0, 2) Math.pow(y - y0), 2) <= r){ // 手指下有端点,剖断是不是连线 if(canConnect(x, y)) { // todo } break; } } })

1
2
3
4
5
6
7
8
9
10
11
12
13
14
easel.addEventListener("touchmove", e => {
let x0 = e.targetTouches[0].pageX, y0 = e.targetTouches[0].pageY;
// 端点半径 ------ 取连通图端点半径的2倍,提升移动端体验
let r = radius * 2;
for(let [x, y] of coords){
if(Math.sqrt(Math.pow(x - x0, 2) Math.pow(y - y0), 2) <= r){
// 手指下有端点,判断能否连线
if(canConnect(x, y)) {
// todo
}
break;
}
}
})

在未绘制任何线段或端点在此以前,手指滑过的狂妄端点都会被当作「一笔画」的最先点;在绘制了线段(或有选中式点心)后,手指滑过的端点能无法与选中式点心串连成线段须求依照现存标准实行决断。

乐百家前段 6

上海教室,点A与点B可三番五次成线段,而点A与点C不可能一连。小编把「能够与钦赐端点连接成线段的端点称作使得连接点」。连通图端点的有效性连接点从连通图的线条中领取:

JavaScript

coords.forEach(coord => { // 有效连接点(坐标)挂载在端点坐标下 coord.validCoords = []; lines.forEach(({x1, y1, x2, y2}) => { // 坐标是时下线段的源点 if(coord.x === x1 && coord.y === y1) { coord.validCoords.push([x2, y2]); } // 坐标是当前线段的终点 else if(coord.x === x2 && coord.y === y2) { coord.validCoords.push([x1, y1]); } }) })

1
2
3
4
5
6
7
8
9
10
11
12
13
14
coords.forEach(coord => {
// 有效连接点(坐标)挂载在端点坐标下
coord.validCoords = [];
lines.forEach(({x1, y1, x2, y2}) => {
// 坐标是当前线段的起点
if(coord.x === x1 && coord.y === y1) {
coord.validCoords.push([x2, y2]);
}
// 坐标是当前线段的终点
else if(coord.x === x2 && coord.y === y2) {
coord.validCoords.push([x1, y1]);
}
})
})

But…有效连接点只可以推断七个点是或不是为底图的线条,那只是三个静态的参阅,在实际的「交互绘制」中,会蒙受以下境况:

乐百家前段 7
如上图,AB已串连成线段,当前选中式茶食B的管用连接点是 A 与 C。AB 已经一而再成线,要是 BA 也串连成线段,那么线段就再也了,所以那时 BA 无法成线,唯有 AC 技艺成线。

对选中式点心来讲,它的灵光连接点有二种:

  • 与选中式茶食「成线的卓有效用连接点」
  • 与选中式茶食「未成线的有用连接点」

当中「未成线的管事连接点」才具参预「交互绘制」,何况它是动态的。

乐百家前段 8

回头本节内容发轫提的五个难题「手指下是或不是有端点」 与 「选中式茶食到待选中式茶食之间是还是不是成线」,其实可统一为三个标题:手指下是还是不是留存「未成线的管用连接点」。只须把监听手指滑动遍历的数组由连通图全部的端点坐标 coords 替换为当下选中式茶食的「未成线的灵光连接点」就可以。

从那之后「单笔画」的最重要效用已经落到实处。能够当先体验一下:

乐百家前段 9

 1、查询7号课程未有考试成绩的学习者学号。

Graphics Conference Paper Link Archive(Ke-Sen Huang)

3.2 消除砖块

「化解砖块」的平整很简短 —— 紧邻相连通一样色即能够撤废

乐百家前段 10
前五个组成符合「相邻相连通同样色即能够祛除」,所以它们得以被拔除;第多少个组成尽管「相邻一样色」可是不「相连接」所以它不可能被免去。

「化解砖块」的还要有贰个首要的职分:生成砖块对应的分值。在「游戏准则」中,小编曾经提供了对应的数学公式:「消除砖块得分值 = 10 * i 5」。

「消除砖块」算法达成如下:

JavaScript

function clean(tile) { let count = 1; let sameTiles = searchSameTiles(tile); if(sameTiles.length > 0) { deleteTile(tile); while(true) { let nextSameTiles = []; sameTiles.forEach(tile => { nextSameTiles.push(...searchSameTiles(tile)); makeScore( count * 10 5); // 标识当前分值 deleteTile(tile); // 删除砖块 }); // 清除达成,跳出循环 if(next萨姆eTiles.length === 0) break; else { sameTiles = nextSameTiles; } } } }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function clean(tile) {
let count = 1;
let sameTiles = searchSameTiles(tile);
if(sameTiles.length > 0) {
deleteTile(tile);
while(true) {
let nextSameTiles = [];
sameTiles.forEach(tile => {
nextSameTiles.push(...searchSameTiles(tile));
makeScore( count * 10 5); // 标记当前分值
deleteTile(tile); // 删除砖块
});
// 清除完成,跳出循环
if(nextSameTiles.length === 0) break;
else {
sameTiles = nextSameTiles;
}
}
}
}

排除的算法使用「递归」逻辑上会清晰一些,不过「递归」在浏览器上轻松「栈溢出」,所以小编未有选取「递归」完结。

自行识图

作者在录入关卡配置时,开掘多少个7条边以上的接入图很轻巧录错或录重线段。作者在动脑筋是不是开垦一个自动识别图形的插件,究竟「一笔画」的图形是有平整的几何图形。

乐百家前段 11

下面的卡子「底图」,一眼就足以识出三个颜色:

  • 白底
  • 端点颜色
  • 线条颜色

还要这三种颜色在「底图」的面积大小顺序是:白底 > 线段颜色 > 端点颜色。底图的「搜集色值表算法」相当粗略,如下伪代码:

JavaScript

let imageData = ctx.getImageData(); let data = imageData.data; // 色值表 let clrs = new Map(); for(let i = 0, len = data.length; i < len; i = 4) { let [r, g, b, a] = [data[i], data[i 1], data[i 2], data[i 3]]; let key = `rgba(${r}, ${g}, ${b}, ${a})`; let value = clrs.get(key) || {r, g, b, a, count: 0}; clrs.has(key) ? value.count : clrs.set(rgba, {r, g, b, a, count}); }

1
2
3
4
5
6
7
8
9
10
let imageData = ctx.getImageData();
let data = imageData.data;
// 色值表
let clrs = new Map();
for(let i = 0, len = data.length; i < len; i = 4) {
let [r, g, b, a] = [data[i], data[i 1], data[i 2], data[i 3]];
let key = `rgba(${r}, ${g}, ${b}, ${a})`;
let value = clrs.get(key) || {r, g, b, a, count: 0};
clrs.has(key) ? value.count : clrs.set(rgba, {r, g, b, a, count});
}

对此连通图来说,只要把端点识别出来,连通图的大概也就出去了。

    Select sno fromsc where cno='7' and grade is null

Reproducible Researcharchive (image processing, vision, machine learning) (Xin Li)

3.3 坚实砖墙

砖墙在去掉了一部分砖石后,会并发空洞,此时内需对墙体举行狠抓:

向下夯实 向左夯实 向左下夯实(先下后左)

一种高效的达成方案是,每趟「化解砖块」后平昔遍历砖墙数组(10×10数组)再把空洞抓实,伪代码表示如下:

JavaScript

for(let row = 0; row < 10; row) { for(let col = 0; col < 10; col) { if(isEmpty(row, col)) { // 水平方向(向左)抓牢if(isEmptyCol(col)) { tampRow(col); } // 垂直方向(向下)做实 else { tampCol(col); } break; } } }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for(let row = 0; row < 10; row) {
for(let col = 0; col < 10; col) {
if(isEmpty(row, col)) {
// 水平方向(向左)夯实
if(isEmptyCol(col)) {
tampRow(col);
}
// 垂直方向(向下)夯实
else {
tampCol(col);
}
break;
}
}
}

But… 为了狠抓多个浮泛对一张大数组进行全量遍历并不是一种高效的算法。在小编看来影响「墙体压实」效能的成分有:

  1. 固定空洞
  2. 砖块移动(抓好)

举目四望墙体数组的至关重要指标是「定位空洞」,可是或不是不扫描墙体数组直接「定位空洞」?

墙体的「空洞」是出于「解决砖块」产生的,换种说法 —— 被扫除的砖头留下来的坑位正是墙体的空洞。在「化解砖块」的还要标志空洞的任务,那样就毫无全量扫描墙体数组,伪代码如下:

JavaScript

function deleteTile(tile) { // 标识空洞 markHollow(tile.index); // 删除砖块逻辑 ... }

1
2
3
4
5
6
function deleteTile(tile) {
// 标记空洞
markHollow(tile.index);
// 删除砖块逻辑
...
}

在地点的加强动图,其实能够看看它的加强进程如下:

  1. 抽象上方的砖块向下移动
  2. 空驶列车左边的砖头向左移动

墙体在「加强」进程中,它的边际是实时在变化,假诺「加强」不按实际边界进行扫描,会产生多余的空白扫描:

乐百家前段 12

如何记录墙体的边界?
把墙体拆分成贰个个独立的列,那么列最顶端的空白格片段正是墙体的「空白」,而别的非最上部的空白格片段即墙体的「空洞」。

乐百家前段 13

小编使用一组「列群集」来描述墙体的分界并记下墙体的悬空,它的模型如下:

JavaScript

/* @ count - 列砖块数 @ start - 最上端行索引 @ end - 尾巴部分行索引 @ pitCount - 坑数 @ topPit - 最顶端的坑 @ bottomPit - 最尾部的坑 */ let wall = [ {count, start, end, pitCount, topPit, bottomPit}, {count, start, end, pitCount, topPit, bottomPit}, ... ];

1
2
3
4
5
6
7
8
9
10
11
12
13
/*
@ count - 列砖块数
@ start - 顶部行索引
@ end - 底部行索引
@ pitCount - 坑数
@ topPit - 最顶部的坑
@ bottomPit - 最底部的坑
*/
let wall = [
{count, start, end, pitCount, topPit, bottomPit},
{count, start, end, pitCount, topPit, bottomPit},
...
];

本条模型能够描述墙体的多个细节:

  • 空列
  • 列的连年空洞
  • 列的非连续空洞
JavaScript

// 空列 if(count === 0) { ... } // 连续空洞 else if(bottomPit -
topPit   1 === pitCount) { ... } // 非连续空洞 else { ... }

<table>
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<tbody>
<tr class="odd">
<td><div class="crayon-nums-content" style="font-size: 13px !important; line-height: 15px !important;">
<div class="crayon-num" data-line="crayon-5b8f3d2c2df29914802382-1">
1
</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5b8f3d2c2df29914802382-2">
2
</div>
<div class="crayon-num" data-line="crayon-5b8f3d2c2df29914802382-3">
3
</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5b8f3d2c2df29914802382-4">
4
</div>
<div class="crayon-num" data-line="crayon-5b8f3d2c2df29914802382-5">
5
</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5b8f3d2c2df29914802382-6">
6
</div>
<div class="crayon-num" data-line="crayon-5b8f3d2c2df29914802382-7">
7
</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5b8f3d2c2df29914802382-8">
8
</div>
<div class="crayon-num" data-line="crayon-5b8f3d2c2df29914802382-9">
9
</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5b8f3d2c2df29914802382-10">
10
</div>
<div class="crayon-num" data-line="crayon-5b8f3d2c2df29914802382-11">
11
</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5b8f3d2c2df29914802382-12">
12
</div>
</div></td>
<td><div class="crayon-pre" style="font-size: 13px !important; line-height: 15px !important; -moz-tab-size:4; -o-tab-size:4; -webkit-tab-size:4; tab-size:4;">
<div id="crayon-5b8f3d2c2df29914802382-1" class="crayon-line">
// 空列
</div>
<div id="crayon-5b8f3d2c2df29914802382-2" class="crayon-line crayon-striped-line">
if(count === 0) { 
</div>
<div id="crayon-5b8f3d2c2df29914802382-3" class="crayon-line">
 ...
</div>
<div id="crayon-5b8f3d2c2df29914802382-4" class="crayon-line crayon-striped-line">
}
</div>
<div id="crayon-5b8f3d2c2df29914802382-5" class="crayon-line">
// 连续空洞
</div>
<div id="crayon-5b8f3d2c2df29914802382-6" class="crayon-line crayon-striped-line">
else if(bottomPit - topPit   1 === pitCount) { 
</div>
<div id="crayon-5b8f3d2c2df29914802382-7" class="crayon-line">
 ...
</div>
<div id="crayon-5b8f3d2c2df29914802382-8" class="crayon-line crayon-striped-line">
}
</div>
<div id="crayon-5b8f3d2c2df29914802382-9" class="crayon-line">
// 非连续空洞
</div>
<div id="crayon-5b8f3d2c2df29914802382-10" class="crayon-line crayon-striped-line">
else {
</div>
<div id="crayon-5b8f3d2c2df29914802382-11" class="crayon-line">
 ...
</div>
<div id="crayon-5b8f3d2c2df29914802382-12" class="crayon-line crayon-striped-line">
}
</div>
</div></td>
</tr>
</tbody>
</table>

砖块在消除后,映射到单个列上的空洞会有三种布满形态 —— 再三再四与非接二连三。

乐百家前段 14

「再三再四空洞」与「非一而再空洞」的抓实进度如下:

乐百家前段 15

实质上「空驶列车」放大于墙体上,也可以有「空洞」类似的分布形态 —— 接二连三与非连续。
乐百家前段 16

它的抓牢进程与虚幻类似,这里就不赘述了。

端点识别

理论上,通过访问的「色值表」能够直接把端点的坐标记别出来。作者设计的「端点识别算法」分以下2步:

  1. 按像素扫描底图直到遇见「端点颜色」的像素,踏入第二步
  2. 从底图上海消防除端点并记下它的坐标,再次来到继续第一步

伪代码如下:

JavaScript

for(let i = 0, len = data.length; i < len; i = 4) { let [r, g, b, a] = [data[i], data[i 1], data[i 2], data[i 3]]; // 当前像素颜色属于端点 if(isBelongVertex(r, g, b, a)) { // 在 data 中清空端点 vertex = clearVertex(i); // 记录端点消息vertexes.push(vertext); } }

1
2
3
4
5
6
7
8
9
10
for(let i = 0, len = data.length; i < len; i = 4) {
let [r, g, b, a] = [data[i], data[i 1], data[i 2], data[i 3]];
// 当前像素颜色属于端点
if(isBelongVertex(r, g, b, a)) {
// 在 data 中清空端点
vertex = clearVertex(i);
// 记录端点信息
vertexes.push(vertext);
}
}

But… 上面的算法只好跑无损图。作者在动用了一张手提式有线电话机截屏做测量试验的时候发掘,搜罗到的「色值表」长度为 五千 !那直接导致端点和线条的色值不可能直接获得。

透过深入分析,能够窥见「色值表」里大多数色值都以近乎的,也便是在本来的「搜集色值表算法」的功底上增加一个好像颜色过滤即能够找寻端点和线条的主色。伪代码达成如下:

JavaScript

let lineColor = vertexColor = {count: 0}; for(let clr of clrs) { // 与底色周围,跳过 if(isBelongBackground(clr)) continue; // 线段是多少第二多的水彩,端点是第三多的颜料 if(clr.count > lineColor.count) { [vertexColor, lineColor] = [lineColor, clr] } }

1
2
3
4
5
6
7
8
9
let lineColor = vertexColor = {count: 0};
for(let clr of clrs) {
// 与底色相近,跳过
if(isBelongBackground(clr)) continue;
// 线段是数量第二多的颜色,端点是第三多的颜色
if(clr.count > lineColor.count) {
[vertexColor, lineColor] = [lineColor, clr]
}
}

取到端点的主色后,再跑贰遍「端点识别算法」后居识别出 203 个端点!那是怎么吗?

乐百家前段 17

上海体育场所是加大5倍后的底图局地,影青端点的周边和里面充斥着大量噪点(杂色块)。事实上在「端点识别」进程中,由于噪点的存在,把本来的端点被分解成19个或数十二个小端点了,以下是跑过「端点识别算法」后的底图:

乐百家前段 18

透过上海教室,能够直观地搜查捕获三个定论:识别出来的小端点只在对象(大)端点上集中布满,何况大端点范围内的小端点叠合交错。

尽管把叠合交错的小端点归并成一个多边点,那么那一个大端点将足够像样指标端点。小端点的联结伪代码如下:

JavaScript

for(let i = 0, len = vertexes.length; i < len - 1; i) { let vertexA = vertexes[i]; if(vertextA === undefined) continue; // 注意这里 j = 0 实际不是 j = i 1 for(let j = 0; j < len; j) { let vertexB = vertexes[j]; if(vertextB === undefined) continue; // 点A与点B有增大,点B合併到点A并删除点B if(isCross(vertexA, vertexB)) { vertexA = merge(vertexA, vertexB); delete vertexA; } } }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
for(let i = 0, len = vertexes.length; i < len - 1; i) {
let vertexA = vertexes[i];
if(vertextA === undefined) continue;
// 注意这里 j = 0 而不是 j = i 1
for(let j = 0; j < len; j) {
let vertexB = vertexes[j];
if(vertextB === undefined) continue;
// 点A与点B有叠加,点B合并到点A并删除点B
if(isCross(vertexA, vertexB)) {
vertexA = merge(vertexA, vertexB);
delete vertexA;
}
}
}

加了小端点归并算法后,「端点识别」的精确度就上来了。经笔者本地质度量试已经足以 百分之百 识别有损的交接图了。

 

Mesh Libraries and Tools

3.4 解决残砖

上一小节提到了「描述墙体的境界并记录墙体的虚幻」的「列集结」,作者是一向利用那一个「列集结」来扫除残砖的,伪代码如下:

JavaScript

function clearAll() { let count = 0; for(let col = 0, len = this.wall.length; col < len; col) { let colInfo = this.wall[col]; for(let row = colInfo.start; row <= colInfo.end; row) { let tile = this.grid[row * this.col col]; tile.score = -20 - 40 * count ; // 标记表彰分数 tile.removed = true; } } }

1
2
3
4
5
6
7
8
9
10
11
function clearAll() {
let count = 0;
for(let col = 0, len = this.wall.length;  col < len; col) {
let colInfo = this.wall[col];
for(let row = colInfo.start; row <= colInfo.end; row) {
let tile = this.grid[row * this.col col];
tile.score = -20 - 40 * count ; // 标记奖励分数
tile.removed = true;
}
}
}

线条识别

我分多少个步骤实现「线段识别」:

  1. 加以的多个端点连接成线,并搜聚连线上N个「样本点」;
  2. 遍历样本点像素,假诺像素色值不等于线段色值则意味那八个端点之间海市蜃楼线段

何以搜罗「样式点」是个难点,太密集会影响属性;太疏松精准度无法担保。

在作者前面有五个选项:N 是常量;N 是变量。
假设 N === 5。局地提取「样式点」如下:

乐百家前段 19

上航海用教室,会识别出三条线条:AB, BC 和 AC。而实质上,AC不可能成线,它只是因为 AB 和 BC 视觉上共一线的结果。当然把 N 值向上升高能够化解这一个标题,可是 N 作为常量的话,这么些常量的取量必要靠经验来剖断,果然放任。

为了避免 AB 与 BC 同处一向线时 AC 被辨认成线段,其实相当的粗略 —— 多少个「样本点」的区间小于或等于端点直径
假设 N = S / (2 * R),S 表示两点的离开,ENCORE代表端点半径。局部提取「样式点」如下:

乐百家前段 20

如上海体育场所,成功地绕过了 AC。「线段识别算法」的伪代码完成如下:

JavaScript

for(let i = 0, len = vertexes.length; i < len - 1; i) { let {x: x1, y: y1} = vertexes[i]; for(let j = i 1; j < len; j) { let {x: x2, y: y2} = vertexes[j]; let S = Math.sqrt(Math.pow(x1 - x2, 2) Math.pow(y1 - y2, 2)); let N = S / (R * 2); let stepX = (x1 - x2) / N, stepY = (y1 - y2) / n; while(--N) { // 样本点不是线段色 if(!isBelongLine(x1 N * stepX, y1 N * stepY)) break; } // 样本点都合格 ---- 表示两点成线,保存 if(0 === N) lines.push({x1, y1, x2, y2}) } }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for(let i = 0, len = vertexes.length; i < len - 1; i) {
let {x: x1, y: y1} = vertexes[i];
for(let j = i 1; j < len; j) {
let {x: x2, y: y2} = vertexes[j];
let S = Math.sqrt(Math.pow(x1 - x2, 2) Math.pow(y1 - y2, 2));
let N = S / (R * 2);
let stepX = (x1 - x2) / N, stepY = (y1 - y2) / n;
while(--N) {
// 样本点不是线段色
if(!isBelongLine(x1 N * stepX, y1 N * stepY)) break;
}
// 样本点都合格 ---- 表示两点成线,保存
if(0 === N) lines.push({x1, y1, x2, y2})
}
}

 2、查询7号课程成绩在90分以上或60分以下的学童学号。

Surface_Mesh(D. Sieger, M. Botsch)

4. View

View 首要的功能有三个:

  • UI 管理
  • 映射 Model 的变化(动画)

UI 管理主要是指「界面绘制」与「能源加载管理」,这两项成效比较普及本文就径直略过了。View 的主导是「映射 Model 的变型」并完结对应的动画片。动画是繁体的,而映射的规律是归纳的,如下伪代码:

JavaScript

update({originIndex, index, clr, removed, score}) { // 还一贯不 originIndex 或未有色值,直接不管理 if(originIndex === undefined || clr === undefined) return ; let tile = this.tiles[originIndex]; // tile 存在,剖断颜色是不是一样 if(tile.clr !== clr) { this.updateTileClr(tile, clr); } // 当前目录变化 ----- 表示地点也许有变化 if(tile.index !== index) { this.updateTileIndex(tile, index); } // 设置分数 if(tile.score !== score) { tile.score = score; } if(tile.removed !== removed) { // 移除或丰裕当前节点 true === removed ? this.bomb(tile) : this.area.addChild(tile.sprite); tile.removed = removed; } }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
update({originIndex, index, clr, removed, score}) {
// 还没有 originIndex 或没有色值,直接不处理
if(originIndex === undefined || clr === undefined) return ;
let tile = this.tiles[originIndex];
// tile 存在,判断颜色是否一样
if(tile.clr !== clr) {
this.updateTileClr(tile, clr);
}
// 当前索引变化 ----- 表示位置也有变化
if(tile.index !== index) {
this.updateTileIndex(tile, index);
}
// 设置分数
if(tile.score !== score) {
tile.score = score;
}
if(tile.removed !== removed) {
// 移除或添加当前节点
true === removed ? this.bomb(tile) : this.area.addChild(tile.sprite);
tile.removed = removed;
}
}

Model 的砖头每趟数据的转移都会通报到 View 的砖块,View 会依照对应的变动做相应的动作(动画)。

品质优化

鉴于「自动识图」须求对图像的的像素点进行围观,那么品质确实是个必要关爱的难题。小编设计的「自动识图算法」,在甄别图像的长河中需求对图像的像素做三遍扫描:「搜集色值表」 与 「搜罗端点」。在围观次数上其实很难下跌了,不过对于一张 750 * 1334 的底图来讲,「自动识图算法」供给遍历四遍长度为 750 * 1334 * 4 = 4,002,000 的数组,压力仍旧会有的。作者是从压缩被围观数组的尺码来进步品质的。

被扫描数组的尺寸怎么减弱?
笔者直接通过减少画布的尺寸来完成缩短被扫描数组尺寸的。伪代码如下:

JavaScript

// 要减弱的倍数 let resolution = 4; let [width, height] = [img.width / resolution >> 0, img.height / resolution >> 0]; ctx.drawImage(img, 0, 0, width, height); let imageData = ctx.getImageData(), data = imageData;

1
2
3
4
5
// 要压缩的倍数
let resolution = 4;
let [width, height] = [img.width / resolution >> 0, img.height / resolution >> 0];
ctx.drawImage(img, 0, 0, width, height);
let imageData = ctx.getImageData(), data = imageData;

把源图片减少4倍后,获得的图片像素数组独有原本的 4^2 = 16倍。那在性能上是比比较大的进级换代。

Select sno from sc where cno='7' and grade not between 60and 90

GTS(2D dynamic/constrained Delaunay triangulation, robust geometric predicates, mesh boolean set operations, refinement/coarsening, view-independent continuous LOD, view-dependent LOD, AABB-trees, Kd-trees, graph partitioning, isosurfacing, area, volume, mean/gaussian/principal curvature, stripification)

5. Control

Control 要拍卖的业务比很多,如下:

  • 绑定 Model & View
  • 变动通过海关分值
  • 判定通过海关条件
  • 对外交事务件
  • 顾客交互

初阶化时,Control 把 Model 的砖头单向绑定到 View 的砖头了。如下:

Object.defineProperties(model.tile, { originIndex: { get() {...}, set(){ ... view.update({originIndex}) } }, index: { get() {...}, set() { ... view.update({index}) } }, clr: { get() {...}, set() { ... view.update({clr}) } }, removed: { get() {...}, set() { ... view.update({removed}) } }, score: { get() {...}, set() { ... view.update({score}) } } })

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Object.defineProperties(model.tile, {
    originIndex: {
        get() {...},
        set(){
            ...
            view.update({originIndex})
        }
    },  
    index: {
        get() {...},
        set() {
            ...
            view.update({index})
        }
    },
    clr: {
        get() {...},
        set() {
            ...
            view.update({clr})
        }
    },
    removed: {
        get() {...},
        set() {
            ...
            view.update({removed})
        }
    },  
    score: {
        get() {...},
        set() {
            ...
            view.update({score})
        }
    }
})
 

「通过海关分值」与「推断通过海关条件」那对逻辑在本文的「游戏法则」中有连锁介绍,这里不再赘言。

对外事件规划如下:

name detail
pass 通关
pause 暂停
resume 恢复
gameover 游戏结束

客户交互 APIs 规划如下:

name type deltail
init method 初始化游戏
next method 进入下一关
enter method 进入指定关卡
pause method 暂停
resume method 恢复
destroy method 销毁游戏

动用「自动识图」的提议

尽管作者在本土测量试验的时候可以把全体的「底图」识别出来,不过并不可能保险别的开荒者上传的图样是或不是被很好的鉴定区别出来。小编建议,能够把「自动识图」做为三个单独的工具使用。

我写了七个「自动识图」的单独工具页面:
可以在那么些页不熟悉成对应的关卡配置。

 

trimesh2 mesh library(read PLY/OFF/3DS/OBJ, write PLY/OFF/OBJ, subdivision, smoothing, curvature estimation, triangle stripping, ICP, cleanup, decimation, basic shapes) (S. Rusinkiewicz)

6. 问题

在网易有一个关于「消灭星星」的话题:popstar关卡是什么安顿的?

本条话题在终极提议了八个难点 —— 「无法清除和最大得分不满足过关条件的矩阵」

乐百家前段 21

「不可能排除的矩阵」其实便是最大得分为0的矩阵,本质上是「最大得分不满意过关条件的矩阵」。

最大得分不满意过关条件的矩阵
求「矩阵」的最大得分是一个「包包难点」,求解的算法轻易:对脚下矩阵用「递归」的款型把全体的消灭分支都进行一次,并取最高分值。可是javascript 的「递归」极易「栈溢出」导致算法无法实施。

实在在腾讯网的话题中提到一个减轻方案:

网络查到有先后提出做个工具随便生成关卡,自动测算,把适合得分条件的卡子筛选出来

本条解决方案代价是昂贵的!作者提供有源码并从未化解这几个主题素材,而是用贰个相比取巧的法子:走入游戏前检查是事为「不大概清除矩阵」,借使是再一次生成关卡矩阵

稳重:小编利用的取巧方案并从未缓和难点。

结语

下边是本文介绍的「一笔画」的线上 DEMO 的二维码:

乐百家前段 22

游戏的源码托管在:
在这之中游戏达成的本位代码在:
自行识图的代码在:

多谢耐心阅读完本小说的读者。本文仅表示笔者的个人观点,如有不妥之处请不吝赐教。

多谢您的翻阅,本文由 坑坑洼洼实验室 版权全数。就算转发,请注解出处:凹凸实验室()

1 赞 1 收藏 评论

乐百家前段 23

 3、查询课程名以“数据”多少个字初阶的有所科目标课程号和课程名。

OpenMesh(PLY/OBJ, halfedge mesh, decimation, Loop/Sqrt3 subdivision, view-dependent progressive meshes, stripification) (J. Möbius, M. Habbecke)

7. 结语

下边是本文介绍的「消灭星星」的线上 DEMO 的二维码:

乐百家前段 24

娱乐的源码托管在:

感激耐心阅读完本小说的读者。本文仅表示小编的个人观点,如有不妥之处请不吝赐教。
一经对「H5游戏开辟」感兴趣,招待关心大家的专栏。

Select cno,cname from c where cname like '数据%'

CGAL(2D/3D halfedge mesh, tet meshes) [full packages list] (Authors)

参谋资料

  • Knapsack problem
  • NP-completeness
  • popstar关卡是什么样统一希图的?
  • 费雪耶兹乱序算法
  • 内忧外患均分算法

    1 赞 收藏 评论

乐百家前段 25

 

MeshLab(import PLY/STL/OFF/OBJ/3DS/COLLADA/PTX/V3D/PTS/APTS/XYZ/GTS/TRI/ASC/X3D/X3DV/VRML/ALN, export PLY/STL/OFF/OBJ/3DS/COLLADA/VRML/DXF/GTS/U3D/IDTF/X3D, selection/smoothing painting, linear measurements, export planar slices, mesh decimation/repair/optimization, mesh alignment) [All Filters] (Authors)

 4、查询各个学生具备科目标平均战表,输出学生学号和平均成绩。

OpenFlipper(import/export OFF/OBJ/PLY/STL/STLA/STLB/OM, selection tools w/ surface/volume lasso and sphere brush, decimation, smoothing, edge/face editing) (J. Möbius)

    Select sno,avg(grade)from sc group by sno

mview(read/view PMesh/GTS/OFF/COFF/PLY/VRML/Shallo/VTK ASCII POLYDATA/OBJ) (H. Cantzler, T. Breckon)

 5、查询每门学科的选修人数,输出课程号和选修人数。

PLY Tools(read/write PLY)

    Selectcno,count(*) from sc group by cno

ply2vri(convert PLY mesh to signed-distance volumetric grid, VRI/PPM formats) (B.Allen)

 6、查询选修7号课程的学生的学号、姓名、性别。

JMeshLib(read/write OFF/PLY/STL/VRML1/VRML2/OBJ/IV 2.1) (M. Attene)

    Selects.sno,sname,ssex from s,sc where s.sno=sc.sno and cno='7'

ReMESH(automatic manifold repair, isolated component removal, hole filling, handle removal, degenerate triangle removal, sharp feature recovery, defect detection and hilighting, manual repair tools) (M. Attenne)

    或: Select sno,sname,ssex from s where sno in

GPUmesh - Easy Cross-Plateform Cross-API Mesh Management for GPUs(S. Lefebvre)

              ( Select sno from sc where cno='7' )

A48: A Dynamic Adaptive Mesh Library based on Stellar Operators (L. Velho)

 7、查询选修7号课程的学习者的平均年龄。

Volumetric Mesh: tetrahedral and cube volumetric 3D meshes (J. Barbic)

    Selectavg(sage) from s,sc where s.sno=sc.sno and cno='7'

3d-workspace(quadric mesh simplification, re-meshing, recursive/monte-carlo/sphere-packing/voxel sampling, skeleton extraction, Laplacian/scale-dependent/mean-curvature-flow smoothing, Sqrt3/Loop/modified-butterfly/longest-edge subdivision, minimum bounding box, mean value coordinates, Green coordinates, curvature (polynomial fitting, two other implementations), FFD, voxel deformation, skinning with dual quaternions, mesh voxelization, octree, kd-tree, colormap, mesh slicing) (Authors)

    或: Select avg(sage) from s where sno in

SimplexMesh: general non-manifold, non-regular simplicial mesh for mixed dimensions leq 3 (C. Batty)

              (Select sno from sc where cno='7' )

Shape Modeling

 8、查询有30名以上学生选修的课程号。

CGAL Subdivision Demo(Sqrt3, Quad-Triangle, Catmull-Clark, Doo-Sabin) (L.-J. Shiue, P. Alliez, R. Ursu, L. Kettner)

    Select cno fromsc group by cno having count(*)>30

interactive mesh deformation(S. Yoshizawa)

 9、查询至今从不考试不比格的学员学号。

manifold harmonics shape deformation(B. Vallet, B. Lévy)

    Select distinctsno from sc where sno not in

Graphite(Catmull-Clark subdivision) (Authors)

         ( Select sno from sc where grade<60 )

MeshLab(loop/butterfly/midpoint subdivision) (Authors)

    或: Select sno from sc group by sno havingmin(grade)>=60

3D Model Synthesis from examples(P. Merrell)

10、查询全体考试战绩的平分分同样的学员学号分组

ShapeShop: sketch-based hierarchical implicit surface ("BlobTree") modeling (and SurfaceTree)(R. Schmidt, B. Wyvill, K. Singh)

二、

Real-time implicit surface polygonizer(R. Schmidt)

 1、寻觅选修课程号为C2的学生学号与成就。

As-rigid-as-possible 2D shape manipulation(R. Schmidt)

Select sno,grade from sc where cno='C2'

Similarity-Based Surface Modelling(S. Zelinka)

 

Mesh Modelling Using Curve Analogies(S. Zelinka)

 2、搜索选修课程号为C4的上学的小孩子学号与姓名。

2D laplacian curve editing(O. Sorkine)

    Selects.sno,sname from s,sc where s.sno=sc.sno and cno='C4'

Convolution Surfaces for Line Skeletons with Polynomial Weight Distributions(X. Jin, J. Feng, Q. Peng, C-L. Tai)

    注意本题也足以用嵌套做

CARVErobust boolean operations between arbitrary polygonal models (T. Sargeant)

沉凝本题改为“寻觅选修课程号为C4的学员学号、姓名与成就”后还是能够用嵌套做呢?

GeoBrush: Interactive Mesh Geometry Cloning(discrete expmap, 3D Green coordinates deformation, GPU Poisson solver) (K. Takayama, R. Schmidt, K. Singh, T. Igarashi, T. Boubeker, O. Sorkine)

 

MeshFlow: Interactive Visualization of Mesh Construction Sequences(J. Denning, W. Kerr, F. Pellacini)

 3、寻找选修课程名称为 Maths 的学员学号与姓名。

3D Modeling with Silhouettes(A. Rivers, F. Durand, T. Igarashi)

    Selects.sno,sname from s,sc,c

Apparent Layer Operations for the Manipulation of Deformable Objects(T. Igarashi, J. Mitani)

    where  s.sno=sc.sno and c.cno=sc.cno andcname='Maths'

Mesh Snapping: Robust Interactive Mesh Cutting Using Fast Geodesic Curvature Flow(J. Zhang, C. Wu, J. Cai, J. Zheng, X-C. Tai)

小心本题也能够用嵌套做

Mixed Finite Elements for Variational Surface Modeling(A. Jacobson, E. Tosun, O. Sorkine, D. Zorin)

 

Bounded Biharmonc Weights for Real-Time Deformation(A. Jacobson, I. Baran, J. Popović, O. Sorkine)

 4、搜索选修课程号为C2或C4的上学的小孩子学号。

DT-Grid: data structure for high-resolution level sets(open and closed surfaces, dilation, CSG, texture coordinates, conversion from OBJ/PLY, to PLY) (M. Nielsen, K. Museth)

    Select distinctsno from sc where cno in ('C2','C4')

Shape Space Exploration of Constrained Meshes(Y-L. Yang, Y.-J. Yang, H. Pottmann, N. Mitra)

或: Select distinct sno from sc where cno='C2' or cno='C4'

Slices: A Shape-proxy Based on Planar Sections(J. McCrae, K. Singh, N. Mitra)

 

EXPLORATION OF CONTINUOUS VARIABILITY IN COLLECTIONS OF 3D SHAPES(M. Ovsjanikov, W. Li, L. Guibas, N. Mitra)

 5、寻觅选修课程号为C2和C4的学员学号。

GlobFit: Consistently Fitting Primitives by Discovering Global Relations(data) (Y. Li, X. Wu, Y. Chrysanthou, A. Sharf, D. Cohen-Or, N. Mitra)

    Select sno fromsc where cno='C2' and sno in

Detail-Replicating Shape Stretching(Implicit mesh fairing using curvature flow, patch-based texture synthesis, octree with ray tracing, bézier splines) (I. Alhashim)

         ( Select sno from sc where cno='C4' )

Volumetric Modeling with Diffusion Surfaces(K. Takayama, O. Sorkine, A. Nealen, T. Igarashi)

    注意本题也能够用一连做

Metropolis Procedural Modeling(J. Talton, Y. Lou, S. Lesser, J. Duke, R. Mech, V. Koltun)

思考:Select distinct sno from sc where cno='C2' andcno='C4'正确吗?

siteplan: rapid architectural prototyping using procedural extrusions(T. Kelly, P. Wonka)

 

mesh-talent (gauss-newton solver, (unknown) graph-based mesh deformation) (Authors)

 6、寻找不学C2课程的学习者姓名和年龄。

Smooth Shape-Aware Functions with Controlled Extrema(A. Jacobson, T. Weinkauf, O. Sorkine)

    Selectsname,sage from s where sno not in

SESAME: Sketch, Extrude, Sculpt and Manipulate Easily(J. Y. Oh)

         ( Selectsno from sc where cno='C2' )

Virtual LEGO(J. Y. Oh)

    或: Select sname,sage from s where not exists

Easy Mesh Cutting(Z. Ji, L. Liu, Z. Chen, G. Wang)

              (Select * from sc where sno=s.sno and cno='C2' )

sculpt: simple level set sculpting program(multi-resolution point splatting) (R. Bridson)

 

Segmentation

 7、寻找选修了数据库课程的持有学员姓名。(同3)

efpisoft: hierarchical mesh segmentation based on fitting primitives(M. Attene)

    Select snamefrom s,sc,c

mesh segmentation benchmark database and viewer(X. Chen, A. Golovinskiy, T. Funkhouser)

where  s.sno=sc.snoand c.cno=sc.cno and cname='数据库'

Graphite(variational shape approximation,image vectorization) [documentation wiki] (Authors)

 

SegMatch: Shape Segmentation and Shape Matching from Point Cloud(T. Dey, S. Goswami)

 8、寻觅数据库课程不如格的女孩子姓名。

ShapeAnnotatorsegmentation tool (fitting primitives, barycentric/height/integral geodesic Morse, Plumber, Lloyd clustering)(Authors)

    连接:Select sname from s,sc,c

Shape Diameter Function (SDF) segmentation tool(L. Shapira)

         where  s.sno=sc.sno andc.cno=sc.cno and cname='数据库'

Parameterization

                and grade<60 and ssex='女'

fast stretch-minimizing parameterization(includes shape-preserving/Tutte/harmonic parameterization, and natural conformal parameterization ) (S. Yoshizawa)

    嵌套:Select sname from s where ssex='女' and  sno in

Graphite(ABF, ABF , DPBF, LSCM, HLSCM, Barycentric, mean-value coordinates, L2 stretch,spectral conformal,Periodic Global Parameterization,Constrained texture mapping,texture atlas generation) [documentation wiki] (Authors)

               (Select sno from sc where grade<60 and cno in

CGAL(LSCM, discrete conformal/authalic, Floater mean-value, Tutte barycentric) [full packages list] (Authors)

                     ( Select cno from c where cname='数据库' )

linear discrete conformal parameterization(K. Crane)

               )

Discrete Exponential Map Demo(R. Schmidt)

 

Local/Global Approach to Mesh Parameterization(ARAP, ASAP) (L. Liu, L. Zhang, Y. Xu, G. Gotsman, S. Gortler)

 9、搜索各门课程的平均战绩,输出课程名和平均战表。

Mesh Processing

    Selectcname,avg(grade) from sc,c

mesh smoothing/denoising by averaging with similarity-based weights(S. Yoshizawa)

    wherec.cno=sc.cno  group by c.cno,cname

estimating curvature tensors on triangle meshes with CGAL(P. Alliez)

理念本题也得以用嵌套做吗?

Graphite(mesh curvature,uniform remeshing,mesh repair,volume meshing,manifold harmonics,appearance-preserving simplification,normal mapping) [documentation wiki] (Authors)

 

CGAL(mesh simplification, mesh ridges/umbilics, mesh curvature)[full packages list] (Authors)

10、找寻各样学生的平均成绩,输出学生姓名和平均成绩。

MeshLab(discrete curvature, monte-carlo/stratified/poisson-disk mesh sampling, Hausdorff distance between meshes, uniform remeshing, voronoi vertex clustering, laplacian/Taubin smoothing, mesh unsharp mask, geodesic distances) [All Filters] (Authors)

    Selectsname,avg(grade) from s,sc

Simplification Envelopesgenerate mesh level-of-detail hierarchies (J. Cohen, A. Varshney, G. Turk)

    wheres.sno=sc.sno group by s.sno,sname

Volfillfill holes in mesh using volumetric diffusion (S. Marschner, K. Berglund)

心想本题也足以用嵌套做啊?

trimeshinfo: compute mesh properties(manifold, genus, orientation, volume, self-intersection, boundaries, connected components, ...) (Authors)

 

Discrete Laplace Operator on Meshed Surfaces(J. Sun, M. Belkin, Y. Wang)

11、找寻最少有二拾几个学生选修的课程名。

QualMesh: Delaunay meshing of surfaces and volumes(T. Dey, T. Ray)

    Select cnamefrom c where cno in

DelIso: delaunay meshing of isosurfaces(T. Dey, J. Levine)

         ( Selectcno from sc group by cno having count(*)>=30 )

SurfRemesh: Delaunay Remeshing of Polygonal Surfaces(T. Dey, T. Ray)

注意本题也得以用三番五次做

DelPSC: delaunay mesh generation for surfaces, volumes and complexes(T. Dey, J. Levine)

 

TriMesh2MT: convert polygon mesh to Multi-Triangulation(M. Attenne, E. Danovaro, P. Magillo)

12、搜索选修了相当多于3门科目的学生姓名。

approximating gradients on meshes and point coulds via diffusion metric(C. Luo, I. Safa, Y. Wang)

    Select snamefrom s where sno in

geodesic: multiple source/target exact geodesic algorithm for triangular mesh(unknown)

         ( Selectsno from sc group by sno having count(*)>=3 )

IsoEx: Feature Sensitive Mesh Extraction(L. Kobbelt, M. Botsch, Schwanecke, H.P. Seidel)

专心本题也得以用一而再做

discrete connections and smooth vector fields on triangle meshes(K. Crane, M. Desbrun, P. Schroder)

 

Scapeterrain simplification (M. Garland)

13、寻找各门课程的大成均十分大于90分的上学的儿童姓名。

Terraterrain simplification (M. Garland)

   Select snamefrom s,sc where s.sno=sc.sno

QSlimmesh simplification software (M. Garland)

         group bys.sno,sname having min(grade)>=90

Permission Gridmesh simplification (S. Zelinka)

方法二:

Topology-based Smoothing of 2D Scalar Fields with C1-Continuity[Page] (T. Weinkauf, Y. Gingold, O. Sorkine)

Select sname from s where sno not in

HanTun: computing handle and tunnel loops in 3D models(T. Dey, K. Li)

         ( Selectsno from sc where grade<90 )

Non-Iterative, Feature-Preserving Mesh Smoothing(also [Page]) (T. Jones)

若果有一门一点都不小于90分就能输出该学员学号

Efficient Implementation of Marching Cubes’ Cases with Topological Guarantees(T. Lewiner, H. Lopes, A. Viera, G. Tavares)

 

Direct Spherical Harmonic Transform of a Triangulated Mesh(M. Mousa, R. Chaine, S. Akkouche)

14、搜索数据库课程战绩不低于该门课程平均分的学员姓名。

Normalizing for Anisotropy in Triangle Models(M. Kazhdan)

    Select snamefrom s,sc,c

Symmetry Descriptors and 3D Shape Matching(M. Kazhdan)

    where  s.sno=sc.sno and sc.cno=c.cno and cname='数据库' and grade>

Unconstrained Isosurface Extraction on Arbitrary Octrees(M. Kazhdan)

         ( Selectavg(grade) from sc,c

Fast Mean-Curvature Flow via Finite-Elements Tracking(M. Kazhdan)

           where sc.cno=c.cnoand cname='数据库'

Interactive and Anisotropic Geometry Processing Using the Screened Poisson Equation(M. Kazhdan)

         )

Blended Intrinsic Maps(V. Kim, Y. Lipman, T. Funkhouser)

15、寻找各种系科男女学生的平均年龄和人口。

Spin Transforms of Discrete Surfaces(K. Crane, U. Pinkall, P. Schröder)

    Selectsdept,ssex,avg(sage),count(*) from s group by sdept,ssex

shapeDNA: compute accurate eigenvalues and eigenfunctions of the Laplace Beltrami operator using higher order FEM with Dirichlet or Neumann boundary conditions (cubic FEM, global mesh refinement, tangential smoothing, PLY, SMF, OBJ, OFF, VTK, ASC3D, STL) (M. Reuter)

16、寻觅Computer系(JSJ)课程平均分最高的学生学号和姓名。

Manifold Mesh Processing(non-manifold repair, smoothing, normals from point clouds, curvature calculation, local shape descriptors, Polymender manifold mesh from triangle soup, mesh simplification) (C. Grimm)

    Selects.sno,sname from s,sc where s.sno=sc.sno and sdept='JSJ'

GMSH: a three-dimensional finite element mesh generator with built-in pre- and post-processing facilities(procedural parameterized geometry, 1/2/3D simplicial finite element meshing, element size control, scalar/vector/tensor datasets) (C. Geuzaine, J.-F. Remacle)

    group bys.sno,sname

Skeleton Extraction by Mesh Contraction(O. Au, C.-L. Tai, H.-K. Chu, D. Cohen-Or, T.-Y. Lee)

    havingavg(grade) >=ALL

Polymender mesh repairer(water-tightness, closed surface repair, sharp features, signed volume generation) (T. Ju)

         ( Selectavg(grade) from s,sc

Algorithms to Automatically Quantify the Geometric Similarity of Anatomical Surfaces(D. Boyer, Y. Lipman, E. St Clair, J. Puente, B. Patel, T. Funkhouser, J. Jernvall, I. Daubechies)

           wheres.sno=sc.sno and sdept='JSJ'

Discrete Laplacians on General Polygonal Meshes(M. Alexa, M. Wardetzky)

           group bys.sno

meshfix(dilation, intersection test, ensure minimal distance, resolve overlaps, cut using shell, cleanup, (M. Attene)

         )

progressive meshesimplementation (H. Hao)

17、(补充)查询每门科目标及格率。

HKS: Computing Heat Kernel Signature(J. Sun, M. Ovsjanikov, L. Guibas)

    本题能够分三步做:

SDFGen: generate grid-based signed distance field (level set) from triangle meshes(C. Batty, R. Bridson)

   

mesh_query: robustly checking inside/outside and segment intersection with a mesh(R. Bridson)

    第1步:获得每门课的选修人数

Point Set Processing

     createview  v_all(cno,cnt)

QPoly: meshing scattered 3D points(Y. Ohtake)

         as selectcno, count(*) from sc group by cno

SLIM: sparse low-degree implicits(fitting, rendering, reflection lines, analytic curvature measures, crest lines, suggestive contours) (Y. Ohtake, A. Belyaev, M. Alexa)

    第2步:获得每门课及格人数

Multi-scale Compactly Supported Radial Basis Functions(Y. Ohtake)

     createview  v_pass(cno,cnt_pass)

MeshLab(ICP range-map alignment, ball pivoting, point-set normals, Robust Implicit MLS (RIMLS), Algebraic point-set surface (APSS), Poisson surface reconstruction) [All Filters] (Authors)

         as selectcno, count(*) from sc where grade>=60 group by cno

Vrip(convert aligned range images to volumetric format, extract mesh surface) (B. Curless)

    第3步:每门课的合格人数/每门课选修人数

Zipper(combine range images into polygonal mesh) (G. Turk, H. Ge, B. Curless)

     selectv_all.cno, cnt_pass*100/cnt  from  v_all, v_pass

Scanalyze(manual/ICP alignment and merging of range image data, fill holes, decimation, editing, PLY/SD formats) (Authors)

     where v_all.cno = v_pass.cno

QSplat(real-time multiresolution point-set rendering) (S. Rusinkiewicz, G. King)

 

Constructing Laplace Operator from Point Clouds in R^d(J. Sun, M. Belkin, Y. Wang)

18、查询平均分不如格的学员的学号,姓名,平均分。

NormFet: Approximating Normals and Feature Sizes from Noisy Point Clouds(T. Dey, J. Sun, L. Molnar)

    Selectsc.sno,sname,avg(grade) from student,sc

AMLS for Smoothing Noisy Point Clouds(adaptive moving least squares) (T. Dey, J. Sun)

    wherestudent.sno=sc.sno

Cocone: Delaunay meshing of point sets with boundaries(T. Dey, J. Giesen)

    group bysc.sno,sname

Tight Cocone: water-tight Delaunay meshing of point sets using approximate medial axis(T. Dey, S. Goswami, W. Zhao)

    havingavg(grade)<60

SuperCocone: efficient Delaunay meshing of large point sets(T. Dey, J. Hudson)

心想本题也能够用嵌套做吗?

RobustCocone: Delaunay meshing of noisy point sets(T. Dey, S. Goswami)

 

Peel: isotropic reconstruction of surfaces from point sets with or without boundaries(T. Dey, K. Li)

19、查询平均分不比格的学习者人数。

4-points Congruent Sets for Robust Surface Registration(D. Aiger, N. Mitra, D. Cohen-Or)

    Select count(*)from student

CGAL(Poisson reconstruction, spacing estimation, simplification, outlier removal, smoothing, normal estimation, orientation estimation)[full packages list] (Authors)

    where sno in

integral estimation on a k-manifold embedded in R-d(C. Luo, J. Sun, Y. Wang)

         ( selectsno from sc group by sno having avg(grade)<60 )

discrete Laplace-Beltrami operator on point clouds[Page] (C. Luo, I. Safa, Y. Wang)

    上面是叁个超人的荒唐

FReg: detect approximate symmetries of point sets and B-Rep Models(Authors)

Select count(*) from sc group by sno havingavg(grade)<60

Normal Improvement for Point Rendering(bilateral normal filtering) [Page] (T. Jones)

这是各样学生有几门不如格的多寡

Reconstruction of Solid Models from Oriented Points Sets(M.l Kazhdan)

 

Poisson Surface Reconstruction(M. Kazhdan)

三、

Multilevel Streaming for Out-of-Core Surface Reconstruction(M. Bolitho, M. Kazhdan, R. Burns, H. Hoppe)

 1、查询报酬在一千到2000元之间的男子业务员的姓名和办公编号。

CUDA-Based implementations of SoftAssign and EM-ICP(T. Tamaki, M. Abe, B. Raytchev, K. Kaneda, M. Slomp)

    SelectYname,Ono from YWY

Coherent Point Drift(rigid, affine, nonrigid N-D alignment and correspondence) (A. Myronenko)

    where Salarybetween 1000 and 3000 and Ysex='男'

PowerCrust(watertight polygonal meshing of point set, medial axis transform, simplified medial axis) (N. Amenta) [updated port]

 2、查询各类办公室的业务员人数,输出办公室编号和相应的总人口。

Curves and Surfaces

    SelectOno,count(*) from YWY group by Ono

A Bidirectional Generating Algorithm for Rational Parametric Curves(Z. Li, L. Ma)

 3、查询每种顾客在二〇〇一年十一月购入的总金额,输出客商号和对应的总金额。

Fast Detection of the Geometric Form of Two-Dimensional Cubic Bézier Curves(S. Vincent)

    SelectKno,sum(Fmoney) from FP

Exact Evaluation of Subdivision Surfaces(eigenstructures for Catmull-Clark and Loop schemes) (J. Stam)

    where Fdatebetween '2002.5.1' and '2002.5.31'

Exact Evaluation of Catmull-Clark Subdivision Surfaces near B-Spline Boundaries(D. Lacewell, B. Burley)

    group by Kno

Smooth Two-Dimensional Interpolations: A Recipe for All Polygons(E. Malsch, J. Lin, G. Dasgupta)

 4、查询2000年十一月购买次数当先5次的具备顾客号,且按顾客号升序排序。 

Normal Patches / PN-Triangles(R. Stimpson)

    Select Kno fromFP

Marching Cubes(.vol files) (R. Stimpson)

    where Fdatebetween '2002.5.1' and '2002.5.31'

Coons Patches(R. Stimpson)

    group by Kno

Exact Catmull-Clark Subdivision evaluation(and mean-curvature minimization) (F. Hecht)

    havingcount(*)>5

Laplacian Surface Editing(2D curve deformation) (O. Sorkine, D. Cohen-Or, Y. Lipman, M. Alexa, C. Roessl, H.-P. Seidel)

    order by KnoASC

Elasticurves: Exploiting Stroke Dynamics and Inertia for the Real-time Neatening of Sketched 2D Curves(Y. Thiel, K. Singh, R. Balakrishnan)

 5、查询各办公室男子和女子业务员的平均薪资。

Computational Geometry

    SelectOno,Ysex,avg(Salary) from YWY group by Ono,Ysex

2D voronoi diagrams with CGAL(P. Alliez)

 6、查询2004年四月一度在王海亮业务员手中进货过商品的顾客号、

TRIANGLE: 2D high-quality exact/constrained/conforming Delaunay triangulations(J. Shewchuk)

            顾客姓名和联系电话。

Stellar: a tetrahedral mesh improvement program(B. Klingner, J. Shewchuk)

    SelectKno,Kname,Phone from KH where Kno in

TetGen: A Quality Tetrahedral Mesh Generator and a 3D Delaunay Triangulator (constrained/conforming Delaunay, Voronoi, boundary-conforming, quality/size control, adaptive mesh refinement, intersection testing) (H. Si)

         ( SelectKno from FP

manifold approximation of 3D medial axis(S. Yoshizawa)

           whereFdate between '2002.5.1' and '2002.5.31' and Yno in

CGAL(n-D geometry, 2D/3D spherical geometry, n-D convex hull, 2D/3D/spherical booleans, 2D minkowski sums, 2D polygon partition/offset/skeleton, 2D curve intersection, 2D/3D envelopes, 2D/3D triangulation, 2D/3D alpha shapes, 2D delaunay/voronoi/apollonius/conforming delaunay/conforming gabriel, 3D delaunay isosurfacing, 3D skin surface, n-D spatial data structures, bounding volumes, optimal distances, least-squares geometry fitting, 2D/surface function interpolation, kinetic data structures, AABB Tree, 3D periodic triangulations, tetrahedral meshing w/ implicit/volume/polyhedral boundaries) [full packages list] (Authors)

                      ( Select Yno from YWY where Yname='王海亮' )

METRO: measure differences between triangular meshes(Authors)

         )

BOOLEconvert CSG to Brep (curved solid primitives, polygonal solids) (T. Culver)

    注意本题也得以用接二连三做

MAPC: exact manipulation of algebraic points and curves in the plane (D. Manocha, J. Keyser, T. Culver, M. Foskey, S. Krishnan)

 7、查询全部报酬比1538号业务员高的业务员的号子、姓名和薪资。

Fast Polygon Triangulation based on Seidel's Algorithm(A. Narkhede, D. Manocha)

    SelectYno,Yname,Salary from YWY where Salary >

UNC GAMMA Collision Detection/Proximity Query Packages(penetration depth, intersection detection, tolerance verification, exact and approximate distance computation, separation distance, contact determination, Minkowski sums, Lin-Canny closest features, uniform grid spatial decomposition, OBB/Swept-Sphere/convex-hull bounding-volume hierarchies, polygon soups, rigid motion)

         ( SelectSalary from YWY where Yno='1538' )

DeformCD: collision detection for deformable models(M. Tang, D. Manocha)

 8、查询全体与1538号业务员在同贰个办公室的别样业务员的号子和人名。

CurveSkel: 1D curve skeleton of 3D shape(T. Dey, J. Sun)

    SelectYno,Yname from YWY where Yno!='1538' and Ono in

Shortest paths on a polyhedral surface(B. Kaneva, J. O'Rourke)

         ( SelectOno from YWY where Yno='1538' )

Antiprism polyhedra library(convex hull, polar reciprocals (dual meshes), geodesic spheres, uniform polyhedra, uniform tilings on surfaces, lattices and grids, ring/spiral of points on sphere, equilibrium of points repelling on sphere, near-uniform sphere tessellation, many other polyhedra types, OFF conversion utilities) [A. Rossiter]

 9、查询出售总金额最高的业务员的号子。

Nuages3D delaunay mesh reconstruction from parallel cross-sections (B. Geiger)

    Select Yno fromFP group by Yno having sum(Fmoney) >=ALL

ShortLoop: computing loops in a shortest homology basis(O. Busaryev, T. Dey, J. Sun, Y. Wang)

         ( Selectsum(Fmoney) from FP group by Yno )

Coordinate Free Geometric Programming(S. Mann, N. Litke, T. DeRose)

10、查询全数业务员的号码、姓名、薪俸以及薪金比他高的任何业务员的平均工资。

Calculation of Mappings between one and n-dimensional values using hilbert space-filling curve(J. K. Lawder)

    选取自连接

A Fast and Robust GJK Implementation for Collision Detection of Convex Objects(G. van den Bergen)

    SelectY1.Yno,Y1.Yname,Y1.Salary,avg(Y2.Salary)

Fast Distance Field and Generalized Voronoi Diagram Computation using Graphics Hardware(Authors)

    from   YWY Y1, YWY Y2

Efficient Collision Detection of Complex Deformable Models using AABB Trees(G. van den Bergen)

    where  Y1.Salary < Y2.Salary

M.E.S.H. : Measuring Error between Surfaces using the Hausdorff distance(N. Aspert, D. Santa-Cruz, T. Ebrahimi)

    group by  Y1.Yno  

HandleTunnel: computing handle and tunnel loops on surfaces(T. Dey, K. Li, J. Sun)

 

tunicate: robust computational geometry predicates in floating point(R. Bridson)

四、

Intersections and Distances

 1、找寻种种班级的班级代码、学生人数、平均战表。

Fast 3D Line Segment—Triangle Intersection Test(N. Chirkov)

    SelectBJDM,count(*),avg(CJ) from SC group by BJDM

An Efficient Ray-Quadrilateral Intersection Test(A. Lagae, P Dutre)

 2、寻找各种学生的班级代码、学生姓名、考试科目数、总成绩。

On Faster Sphere-Box Overlap Testing(T. Larsson, T. Akenine-Moller, E. Lengyel)

    SelectBJDM,XSXM,count(*乐百家前段,),sum(CJ) from SC

Fast Tetrahedron-Tetrahedron Overlap Algorithm(F. Ganovelli, F. Ponchio, C. Rocchini)

    group byBJDM,BNXH,XSXM

Ray Bilinear Patch Intersections(S. Ramsey, C. Hansen, K. Potter)

 3、出口一张表格,每位学生对应一条记下,包蕴字段:

GPU-Based Tiled Ray Casting using Depth Peeling(F. Bernadon, C. Pagot, J. Comba, C. Silva)

          班级代码、学生姓名、语文战表、数学成就、外语战表。

An Efficient and Robust ray-box intersection algorithm(A. Williams, S. Barrus, R. Morley, P. Shirley)

    SelectSC1.BJDM,SC1.XSXM,SC1.CJ,SC2.CJ,SC3.CJ

A Fast Triangle-Triangle Intersection Test(T. Moller)

    from  SC SC1, SC SC2, SC SC3

Fast and Robust Triangle-Triangle Overlap Test using Orientation Predicates(P. Guigue, O. Devillers)

    whereSC1.BJDM=SC2.BJDM and SC1.BNXH=SC2.BNXH and

A Fast Triangle-Triangle Overlap Test Using Signed Distances(H. Shen, Z. Tang)

         SC2.BJDM=SC3.BJDM and SC2.BNXH=SC3.BNXH and

Fast Ray-Axis Aligned Bounding Box Overlap Tests with Plücker Coordinates(J. Mahovsky, B. Wyvill)

          SC1.KM='语文' and SC2.KM='数学' and SC3.KM='外语'

Fast Ray/Axis-Aligned Bounding Box Overlap Tests using Ray Slopes(M. Eisemann, M. Magnor, T. Grotsch, S. Muller)

 4、输出一张表格,有实际业绩低于60分的诸位学生对应一条记下,包涵字段:

Fast, Minimum Storage Ray-Triangle Intersection(T. Moller, B. Trumbore)

          班级代码、学生姓名、最低战绩。

Lightweight Bounding Volumes for Ray Tracing(D. Cline, K. Steele, P. Egbert)

    SelectBJDM,XSXM,min(CJ) from SC

Fast and Accurate Circle-Circle and Circle-Line 3D Distance Computation(D. Vranek)

    where  CJ<60 group by BJDM,BNXH,XSXM

A Shaft Culling Tool(E. Haines)

    或:  SelectBJDM,XSXM,min(CJ) from SC

Fast 3D Triangle-Box Overlap Testing(T. Akenine-Moller)

          group byBJDM,BNXH,XSXM

Intersection Test for Collision Detection in Particle Systems(E.-A. Karabassi, G. Papaioannou, T. Theoharis, A. Boehm)

          havingmin(CJ)<60

Techniques for Interactive Ray Tracing of Bézier Surfaces(C. Benthin, I. Wald, P. Slusallek)

 5、输出一张表格,有战绩低于60分的诸位学生对应一条记下,包蕴字段:

Photorealistic Rendering

          班级代码、学生姓名、最高战绩、平均成绩。

TAGL: software rasterizer(B. Levy)

    SelectBJDM,XSXM,max(CJ) from SC

ShadeVis: compute per-vertex ambient occlusion term(Authors)

    group byBJDM,BNXH,XSXM

MeshLab(vertex/face ambient occlusion) (Authors)

    havingmin(CJ)<60

LumosQuad(2D lighting simulation and rendering, quadtree conjugate gradient Poisson solver) (T. Kim, M. Lin)

    请考虑下列做法是还是不是正确:

OpenEXR(read/write/view OpenEXR HDR images)

          SelectBJDM,XSXM,max(CJ),avg(CJ) from SC

bv(BRDF browser, many analytic and empirical BRDF included) (S. Rusinkiewicz)

         where  CJ<60 group byBJDM,BNXH,XSXM

LightPack(light field authoring and rendering)

 6、输出一张表格,全数成绩都不低于60分的各位学生对应一条记下,包涵字段:

aperture(light-field viewer)

          班级代码、学生姓名、平均战表。

renderman shader to dump out grids(M. Pharr)

    SelectBJDM,XSXM,avg(CJ) from SC

skin shader(M. Pharr)

    group by BJDM,BNXH,XSXM

raytracing quaternion julia sets on the GPU(K. Crane)

本文由乐百家前段发布,转载请注明来源:H5游戏开拓:一笔画