- 博客(29)
- 收藏
- 关注
原创 unity3d战棋游戏地图点击的实现
初学Unity,c#也是刚刚开始用,如果有大佬能指出不对的地方我会非常感谢。创建地图网格 在3d编辑器中制作的所以自己划分网格。效果大概是这样的绿色是点击过的部分,数字和debugt线目前只是用来方便观察分割效果首先按照这种关系创建一个EmptyObject(Map)和一个有碰撞机的平面。通过在Hierarchy窗口右键中创建出来的plane默认是带有碰撞的,我们需要他来做射线命中检测。创建的时候最好把Plane的左下角对准Map的中心,因为网格是从Map的中心开始往右上角建立。如果是不太
2020-10-23 23:42:59 2158
原创 GAME101作业3
作业三的第一二步是在作业2的基础上添加几个插值这一段代码的解释可以看传送门叫做透视矫正插值。float Z = 1.0 / (alpha / v[0].w() + beta / v[1].w() + gamma / v[2].w());float zp = alpha * v[0].z() / v[0].w() + beta * v[1].z() / v[1].w() + gamma * v[2].z() / v[2].w();zp *= Z;但是在作业中对w值做了处理,将其变成了0。w本
2020-09-06 21:15:00 731
原创 Bresenham直线算法
参考了wiki,不得不说wiki给出的伪代码实现非常简洁,包含了所有情况的直线void Rasterizer::DrawLine(int x0, int y0, int x1, int y1, Color& c){ //处理斜率大于1的情况 bool steep = abs(y1 - y0) > abs(x1 - x0); if (steep) { swap(x1, y1); swap(x0, y0); } //处理从右向左画的情况 if (x0 > x1)
2020-09-06 10:35:21 295
原创 虚幻4实现自己移动的AI人物
自己用作记录,如果想学习的直接去看这篇文章吧。 设置好导航体积覆盖整个关卡,然后创建一个aicontroller类用到如下几个api。GetAllActorsOfClass查找关卡中所有的目标点MoveToActor移动到某一个目标点OnMoveCompleted移动完成会自动调用// Fill out your copyright notice in the Description page of Project Settings.#include "MyAIController.
2020-08-28 11:17:32 1212
原创 虚幻引擎射线命中判断的具体实现
记录一下免得忘太快了FVector StartPoint = FirstPersonCameraComponent->GetComponentLocation();FVector EndPoint = StartPoint + FirstPersonCameraComponent->GetForwardVector()*200000.f;//给碰撞方法添加条件的结构体FCollisionQueryParams* TraceParam = new FCollisionQueryPa
2020-08-26 20:49:31 537
原创 现代计算机图形学入门作业二
博客仅用于个人记录学习过程中的想法和遇到的错误,可能不适合学习目的的阅读。所有图片都来自现代计算机图形学入门-闫令琪第一部分 要求是把两个三角形栅格化,填写一个判断点是否再三角形内部的函数和一个光栅化函数。 判断点在三角形内部只要用向量叉乘就能实现判断点static bool insideTriangle(float x, float y, const Vector3f* _v){ // TODO : Implement this function to check if the
2020-08-22 11:46:02 621 4
原创 现代计算机图形学入门作业一
博客仅用于个人记录学习历程,可能不适合他人阅读。十分感谢闫大佬的视频,让我能从0开始学习图形学所有图片都来自现代计算机图形学入门-闫令琪第一次作业是填充模型变换和投影变换矩阵,按照课程视频的来就很简单。要注意作业框架中的相机已经规定了相机看的方向是-z,上方向是y。正交投影 正交投影是最好理解的,把整个场景移动到0,0,0的位置,随后压缩成一个222的立方体,再进行光栅化就得到了需要的画面,作业中不需要把物体移动到0,0,0位置,因为作业的框架是把相机永远置于0,0,0,物品随之移动保证相对
2020-08-21 22:34:00 979 5
原创 P2731
欧拉回路逐步插入回路法(Hierholzer 算法)题目要求字典序最小,所以找最小的起点,注意优先选择奇数度的点为起点。#include <iostream>#include <stack>#include <algorithm>#include <vector>using namespace std;stack<int> ans;int head[510];int Enum = 0;int deg[510];struct
2020-05-22 09:48:27 259
原创 poj4738
tarjan求割边模板题注意处理重边,有重边必然不是桥。图一开始不一定连通#include <bits/stdc++.h>using namespace std;#define MAXN 1010#define INF 0x3f3f3fint guards[MAXN][MAXN];int low[MAXN], dfn[MAXN], dfs_clock;vector<int> G[MAXN];int father[MAXN];int ans;bool flag
2020-05-22 09:25:32 119
原创 POJ1144 tarjan找割点
POJ1144 Tarjan找割点就是一道模板题,但是数据比洛谷上求割点的模板题要强,先贴上我一开始写错的部分。if((node == stnode&&low[*c]>dep[node]&&graph[node].size()>1)||(node!=stnode&&low[*c] >= dep[node])) ans.insert(node);当时是认为对于根节点只要有多于一个邻边的话,判断每一个相
2020-05-15 10:53:03 223
原创 南京网络赛,A The beautiful values of the palace
一开始想到二维前缀和,但是看了数据范围肯定是爆空间的。但是实际用到的点其实很少,所以就把所有的点先读进来,然后离散化一下,在对所有点按照先x后y的顺序排序,再依次以y作为位置放到树状数组里面,然后就可以处理处所有的查询#include <iostream>#include <cstdio>#include <cmath>...
2019-09-12 08:07:12 139
原创 POJ 2777 线段树区间覆盖
传送门 这道题需要在线段树的节点tree[index].v存储该节点所代表的范围内的颜色状态。v=-1表示有多种颜色,v > 0表示该区间内范围内都是v这种颜色,这样修改是比较简单的。查询操作的话需要每次查询开始前清空一次vis (标记某个颜色是否已经数过) cnt记录该查询范围内有几种颜色。所以只要找tree[index].v大于0的节点就可以了。附上代码:#...
2019-09-08 16:44:22 187
原创 HDU 4417 Super Mario
这是一道比较裸的主席树,(但是我却调了好久。。。)题目意思是给一段区间,每一个位置上有一个砖头,每个砖头有不同的高度,马里奥最高能跳h的高度,问某个区间有几个砖头是可以跳的。 所以只要离散化一下, 然后建出主席树,两个主席树相减,返回小于等于h高度的砖头有几个就可以了。需要注意的是upper_bound返回的是最后一个大于指定值的位置,所以减一就是最后一个小于等于指定值...
2019-09-05 11:59:46 98
原创 E. Physical Education Lessons
Physical Education Lessons 动态开点线段树#include<bits/stdc++.h>using namespace std;#define maxn 15001000int tot = 1;int tree[maxn];int ls[maxn], rs[maxn];int mark[maxn];int n, m;inlin...
2019-08-06 20:36:58 479
原创 第一次用java写算法——Manacher
尝试用Java写一些算法,之前一直写的一直是很简单的输入输出。import java.util.*;public class Main{ public int Manacher(String a) { int mx = 0, id = 0; String t = "$#"; for(int i = 0; i < a....
2019-05-27 00:24:17 107
原创 DNA sequence HDU 1560
写了有段时间搜索题目,但是第一次碰到迭代深搜。这是题目链接题目的意思大概就是给你几个字符串让后让你求包含所有这几个字符串的最短字符串。不要求连续只要相对位置不变就可以这道题我没有用广搜写过,好像是会MLT。思路就是对照着“ACGT”,不一定要这个只要包含这四个字母的序列,用一个q数组存每一个字符串当前还没放进去的第一位的位置然后依次拿输入中的几个字符串的第一位没有被放进去...
2019-04-26 10:19:31 151
原创 [POJ-1456](贪心+并查集)
题目链接超市里有N个商品. 第i个商品必须在保质期(第di天)之前卖掉, 若卖掉可让超市获得pi的利润.每天只能卖一个商品.现在你要让超市获得最大的利润.多组数据.每组数据第一行为一个整数N (0 <= N <= 10000), 即超市的商品数目之后N行各有两个整数, 第i行为 pi, di (1 <= pi, di <= 10000)对于每一组数据...
2019-04-22 16:13:01 270 1
原创 POJ-1733Parity game做题记录
这是题目链接 这个博客是写给自己看的,加深一下对题目的理解,不太具有参考价值 这道题选择用map来缩小存储的范围,也可以用HASH; 题目思路和HDU3038很相似 以靠后的数字作为根节点来构建一个并查集,节点之间的关系有两种1.a b even : v[a - 1] = 0;表示a到b之间有偶数个1;...
2019-04-22 15:48:21 127
原创 杭电1963 -完全背包
本金和利息都是1000的倍数所以可以除以1000来压缩数组的大小,这道题算简单,典型的完全背包用了三重循环,从第一种债券开始看起,背包大小从最小也就是当前选的债券的值一直增加到当前本金的值,填入每个位置可获得的最大利息。状态转移方程就是dp[j] = max(dp[j], dp[j - bonds[k]/1000] + interting[k]);就很容易写出来了记得每一年...
2018-10-16 16:33:19 267
原创 Catch That Cow
用queue写的广搜 #include<iostream>#include<cstring>#include<algorithm>#include<queue>using namespace std;int N, K; //农夫和牛的位置const int MAXN = 100000;int visited[MAXN + 1...
2018-09-20 09:19:59 130
原创 2815:城堡问题——深搜
代码是模仿郭炜老师的MOOC#include<iostream>#include<cmath>#include<algorithm>#include<cstring>using namespace std;int rooms[60][60]; //房间有几堵墙int color[60][60];//房间染色int maxro...
2018-09-19 08:39:00 261
原创 贪心算法——poj Stall reservations
优先队列没有学好所以程序有些地方写的比较混乱,sort和优先队列都要用的时候感觉还是写运算符重载代码更加简洁。 思想就是把牛按照挤奶时间从小到大排序,从最早挤奶的牛开始,寻找可放置的畜栏,放入后修改畜栏的挤奶结束时间。畜栏存入优先队列按照结束时间从小到大排序,这样在给牛查找畜栏的时候只要检查第一个畜栏是否可以放入即可。 #include <iostream...
2018-08-26 10:40:54 180
原创 动态规划——最长公共子序列
#include <iostream>#include<string>#include<algorithm>using namespace std; string s1; string s2; int mlen[1000][1000];int main(){ while(cin >> s1) { ...
2018-08-22 16:31:11 96
原创 简单动态规划——最大上升子序列
题目都是MOOC网视频里的视频连接没有订阅课程应该是看不了的。直接贴下自己写的代码。#include <iostream>#include<algorithm>using namespace std;int main(){ int a[1000]; int maxlen[1000]; int n; while(ci...
2018-08-20 16:08:06 181
原创 简单动态规划问题——数字三角形
7 3 8 8 1 02 7 4 4寻求从顶部到底部的一个路径,使得路径上的数字的和最大。不必给出具体路径。三角形行数大于1小于100数字为0~99...
2018-08-20 16:04:32 194
原创 简单算法—筛法求素数
筛法求素数的想法就是任意合数都可以表示为素数的积,所以我们找到一个素数便可以筛掉所有他的倍数,这样找素数的范围不断的缩小,最后剩下的就都是素数。 #include <iostream>#include<cstring>using namespace std;const int n = 100;void prime(int a[]){ fo...
2018-08-19 21:24:58 268
原创 快速排序
MOOC上学的快速排序所以代码和视频的有些相似MOOC 自己对快速排序的理解大概就是,先任意选择一个数然后把比它大的和比他小的分别放到两侧。然后分别对两边再进行上述操作,知道分到只剩一个数再返回。贴上代码 #include <iostream>using namespace std;void swapp(int &a, int &...
2018-08-19 21:04:53 137
原创 康托展开
看着这篇文章自己尝试的写了康托展开https://blog.csdn.net/update7/article/details/56681789 #include <iostream>using namespace std;int main(){ int n; int k; int a[21] = {1,1}; int ans =...
2018-08-19 15:39:21 153
原创 MOOC 学习归并排序求逆序数
基础的归并排序#include <iostream>#include<cstring>using namespace std;const int n = 10000;void merge(int a[], int s, int e, int m, int temp[]) //排序部分{ int p1 = s, p2 = m + 1; ...
2018-08-19 15:34:29 202
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人