- 浏览: 1085016 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (695)
- 心情日记 (14)
- AS开发工具 (12)
- 文章转载 (99)
- AIR (5)
- 问题总结 (46)
- SWF格式 (7)
- 测试总结 (10)
- 外文资料 (9)
- 算法技术 (33)
- AS3常用开源库 (43)
- 源码范例 (102)
- FLEX (72)
- FLASH 优化 (33)
- 游戏开发 (49)
- 开发技术 (11)
- 工作应用 (34)
- AS3收集 (140)
- WebBase (0)
- 开发构想 (4)
- 设计模式 (2)
- 框架和框架范例 (19)
- RED5 (3)
- java开发 (3)
- JAVA (1)
- FLASH-3D (23)
- 3D (6)
- 书籍 (10)
- 业界信息资料 (3)
- C# (1)
- JavaScript (12)
- HTML5 (6)
- Flixel (1)
- D5Power RPG网页游戏引擎 (0)
- ColorMatrixFilter - 获得相应颜色的色调 函数 (0)
- Starling (0)
最新评论
-
老顽童203:
字体
水果忍者鼠标跟随特效制作[转载] -
hairball00:
[转] 放出超多的Flash组件源代码 -
he74552775:
flash AS3 RegExp简单功能用法(转) -
hanshuai1232000:
第四点,有利也有弊,等你做了大型的aprg,你就知道了
[转]位图数据内存优化 -
yangfantao:
太感谢
[转] 放出超多的Flash组件源代码
看到有同学提问 hfMapeditor 的屏幕点击坐标转换为直角坐标的方法
http://www.eb163.com/club/thread-4281-1-1.html
屏幕坐标位置的确定用公式计算:
屏幕的x坐标=地图格子逻辑数组中的位置X * 格子宽度
屏幕的y坐标=地图格子逻辑数组中的位置Y * 格子高度/2
得到的图应该是这样的:
那么这个公式是怎样得到呢?
这个地图有5行,看着这个地图你会想,怎么拼图才能将地图拼出来。再画张图来演示:
从这张图可以看出,拼图时从左到右,从上到下,跟正规的矩形拼图一样,唯一同的是,地图元素与元素之间有重叠,看看第一行和第二行之间,第二行的地图元素会压在第一行的元素上,而第三行的的地图元素则压在第二行的元素上。所以,只要找到正确的公式,你就能正确地设计程序,再来一张图:
图上绿点(是高亮度绿色,不是暗绿色)是每块地图元素的起点,第一行的行坐标是0,第二行的行坐标是1,第三行的行坐标是2,......由这些行坐标决定你的地图元素的起点,从这个规律中看出行坐标0,和行坐标2的横向坐标X的起点是一样的是0,行坐标为1的起点是向右移半块地图元素。
再从纵向坐标找规律,看行坐标0和行坐标2,两块地图元素之间的距离刚好是一块地图元素的高。再看看行坐标0和行坐标1,两块地图元素之间的距离刚好是半块地图元素的高。所以,计算每块地图元素的位置,你的转换屏幕坐标和逻辑公式刚好是:
logic.y = ( 2 * stage.y ) / TileHeigth;
logic.x = ( stage.x / TileWidth ) - ( logic.y & 1 ) * ( TileWidth / 2 );
stage.x = logic.x * TileWidth + ( logic.y & 1) * ( TileWidth / 2 );
stage.y = logic.y * TileHeigth / 2;
其中TileHeigth和TileWidth是菱形的高和宽,这样你可以再尝试着定义(0,1),(0,2),(0,3)等点,和得到的结果完全一样···
重要:
首先以上的公式只适用于Staggered斜45度角地图,而slide,和Diamond形地图,这个公式要稍加修改才能用。
Staggered:
Slide:
Diamond:
而得到的逻辑坐标就是把了斜45度得到的实际坐标么?当然不是···
仔细观察,如果我们想用一个直角的坐标来表示这个地图,那么大家可能开发起来也更加直观一些,看这个坐标表示出来的y轴都是扭曲的用起来实在不爽,那么我们来将它转换到直角坐标,那么再来加上寻路等算法都没有任何难度了
首先我们将地图的高进行转换,这个转换主要是将菱形还原成正方形,例如菱形的高宽比是2:1,那么在地图上则需要将地图高度扩大一倍,然后旋转-45度,那么得到对应坐标如下
我们更加仔细的对这个图的坐标进行标注:
/**
* ...
* @author myth815
*/
package ContainerObjectManager
{
import flash.geom.Point;
import Math;
public class PointExchange
{
private static var TileWidth : int = 60;
private static var TileHeigth : int = 30;
public function PointExchange()
{
//this Class not allow init!
}
public static function StageToLogic(stage:Point):Point
{
var logic : Point = new Point;
logic.y = ( 2 * stage.y ) / TileHeigth;
logic.x = ( stage.x / TileWidth ) - ( logic.y & 1 ) * ( TileWidth / 2 );
return logic;
}
public static function LogicToStage(logic:Point):Point
{
var stage : Point = new Point;
stage.x = logic.x * TileWidth + ( logic.y & 1) * ( TileWidth / 2 );
stage.y = logic.y * TileHeigth / 2;
return stage;
}
}
}
复制代码
http://www.eb163.com/club/thread-4281-1-1.html
屏幕坐标位置的确定用公式计算:
屏幕的x坐标=地图格子逻辑数组中的位置X * 格子宽度
屏幕的y坐标=地图格子逻辑数组中的位置Y * 格子高度/2
得到的图应该是这样的:
那么这个公式是怎样得到呢?
这个地图有5行,看着这个地图你会想,怎么拼图才能将地图拼出来。再画张图来演示:
从这张图可以看出,拼图时从左到右,从上到下,跟正规的矩形拼图一样,唯一同的是,地图元素与元素之间有重叠,看看第一行和第二行之间,第二行的地图元素会压在第一行的元素上,而第三行的的地图元素则压在第二行的元素上。所以,只要找到正确的公式,你就能正确地设计程序,再来一张图:
图上绿点(是高亮度绿色,不是暗绿色)是每块地图元素的起点,第一行的行坐标是0,第二行的行坐标是1,第三行的行坐标是2,......由这些行坐标决定你的地图元素的起点,从这个规律中看出行坐标0,和行坐标2的横向坐标X的起点是一样的是0,行坐标为1的起点是向右移半块地图元素。
再从纵向坐标找规律,看行坐标0和行坐标2,两块地图元素之间的距离刚好是一块地图元素的高。再看看行坐标0和行坐标1,两块地图元素之间的距离刚好是半块地图元素的高。所以,计算每块地图元素的位置,你的转换屏幕坐标和逻辑公式刚好是:
logic.y = ( 2 * stage.y ) / TileHeigth;
logic.x = ( stage.x / TileWidth ) - ( logic.y & 1 ) * ( TileWidth / 2 );
stage.x = logic.x * TileWidth + ( logic.y & 1) * ( TileWidth / 2 );
stage.y = logic.y * TileHeigth / 2;
其中TileHeigth和TileWidth是菱形的高和宽,这样你可以再尝试着定义(0,1),(0,2),(0,3)等点,和得到的结果完全一样···
重要:
首先以上的公式只适用于Staggered斜45度角地图,而slide,和Diamond形地图,这个公式要稍加修改才能用。
Staggered:
Slide:
Diamond:
而得到的逻辑坐标就是把了斜45度得到的实际坐标么?当然不是···
仔细观察,如果我们想用一个直角的坐标来表示这个地图,那么大家可能开发起来也更加直观一些,看这个坐标表示出来的y轴都是扭曲的用起来实在不爽,那么我们来将它转换到直角坐标,那么再来加上寻路等算法都没有任何难度了
首先我们将地图的高进行转换,这个转换主要是将菱形还原成正方形,例如菱形的高宽比是2:1,那么在地图上则需要将地图高度扩大一倍,然后旋转-45度,那么得到对应坐标如下
我们更加仔细的对这个图的坐标进行标注:
/**
* ...
* @author myth815
*/
package ContainerObjectManager
{
import flash.geom.Point;
import Math;
public class PointExchange
{
private static var TileWidth : int = 60;
private static var TileHeigth : int = 30;
public function PointExchange()
{
//this Class not allow init!
}
public static function StageToLogic(stage:Point):Point
{
var logic : Point = new Point;
logic.y = ( 2 * stage.y ) / TileHeigth;
logic.x = ( stage.x / TileWidth ) - ( logic.y & 1 ) * ( TileWidth / 2 );
return logic;
}
public static function LogicToStage(logic:Point):Point
{
var stage : Point = new Point;
stage.x = logic.x * TileWidth + ( logic.y & 1) * ( TileWidth / 2 );
stage.y = logic.y * TileHeigth / 2;
return stage;
}
}
}
复制代码
发表评论
-
HttpStatusConfig --一个HTTP 协议返回的 解析说明类
2012-04-18 16:40 0package guwanyuan.qicool.game ... -
水果忍者鼠标跟随特效制作[转载]
2012-03-01 16:06 2449实现这效果其实比较简单,主要是思路~! package ... -
江湖情缘游戏里的跳的类
2012-02-08 23:55 0package com.app.role.montions ... -
ColorMatrixFilter - 获得相应颜色的色调 函数
2012-02-08 23:03 0/**获得相应颜色的色调的滤镜**/ public sta ... -
ARPG游戏引擎设计思路
2011-12-31 00:48 00.整体结构 下载 (32.92 KB ... -
五子棋算法详解
2011-10-31 04:14 0五子棋算法详解五子棋算法详解五子棋算法详解 -
[原创]围绕任意一个中心点旋转
2011-10-23 13:46 0package guwanyuan.qicool.game.c ... -
珍宝探索 AS3-过关类小游戏
2011-10-13 02:15 0珍宝探索 AS3-过关类小游戏 -
(RepeaterOverTimeLine能将一个for循环执行的工作类似异步地平摊到多个帧上)RepeaterOverTimeLine
2011-09-30 02:26 0(RepeaterOverTimeLine能将一个for循环执 ... -
box2dttest(台球demo,使用了box2d)
2011-09-21 01:49 0box2dttest(台球demo,使用了box2d) -
贪吃蛇游戏
2011-09-16 02:40 0package com { /** ... -
打豆豆
2011-09-08 00:34 0打豆豆打豆豆 -
经典代码-空战.zip (513.2 KB)
2011-09-02 02:24 0经典代码-空战.zip (513.2 KB) -
基于TextField的图文混编的组件
2011-09-01 23:04 0基于TextField的图文混编的组件 -
泡泡龙
2011-08-29 22:36 0泡泡龙泡泡龙泡泡龙 -
井字棋算法
2011-08-18 15:04 0井字棋算法井字棋算法 -
_超级玛丽游戏_flash_game_demo
2011-08-18 00:01 0_超级玛丽游戏_flash_game_demo.zip -
吴万江-TD_demo
2011-08-15 15:35 0吴万江-TD_demo -
S_eVent系列教程
2011-08-13 05:01 0S_eVent系列教程S_eVent系列教程 -
[转][翻译]LoaderMax使用指导(一)
2011-08-10 19:51 1900http://hi.baidu.com/mr_ziqiang/ ...
相关推荐
第8题则相反,将极坐标转换为直角坐标,使用x=ρcosθ和y=ρsinθ。 解答题部分进一步深化了转换的实践。在第10题中,我们按照ρ和θ的值,分别计算出点A和点B的直角坐标。第11题涉及伸缩变换,先进行坐标变换,...
在平面直角坐标系中,我们可以通过坐标来确定点的位置,并进行几何图形的移动和旋转。这个训练资料涉及了平面直角坐标系的基础知识和应用,包括点的坐标表示、图形的平移、旋转以及中心对称等概念。 1. 平行四边形...
【平面直角坐标系】是初中数学中的一个重要概念,它为几何问题的解析解决提供了基础。平面直角坐标系由两条互相垂直的数轴——x轴和y轴组成,原点是它们的交点,用来定位平面上的任何点。 **考点二:平面直角坐标系...
1. 平面直角坐标系:平面直角坐标系是由两条互相垂直的直线,通常称为x轴和y轴,所组成的坐标系统。在这个系统中,每个点的位置可以通过一对有序实数(x坐标和y坐标)来唯一确定。 2. 坐标点对称:点(-1,2)关于原点...
1. **平面直角坐标系的象限划分**:在平面直角坐标系中,四个象限按照顺时针方向编号为第一象限、第二象限、第三象限和第四象限。点P(4,3)位于x轴上方(y轴正方向)和y轴右侧(x轴正方向),因此它在第一象限。 2. ...
在平面直角坐标系中,图形旋转90度通常涉及到坐标轴的转换,这里需要利用几何知识来确定旋转后的位置。 3. 对称性与坐标变换:点A(1+m, 1-n)与点B(-3, 2)关于y轴对称,意味着它们的y坐标相同,而x坐标互为相反数。...
斜角地图是使用菱形瓦片构建的,通过旋转45度,产生三维游戏世界的错觉。斜角地图曾经被广泛使用于早期电子游戏中,因为当时的硬件性能限制,无法运行三维游戏。现在,随着硬件性能的提高,斜角地图已经不再是推荐的...
1. 平面直角坐标系的基本概念:平面直角坐标系是由两条互相垂直的数轴——x轴和y轴构成的,其中每个点的位置可以通过一对有序实数(横坐标和纵坐标)来唯一确定。 2. 绝对值与平方和的性质:题目中出现的"|2a+b+1|+...
【平面直角坐标系知识点详解】 平面直角坐标系是一种用于描述二维空间中点位置的数学工具,由两条互相垂直的数轴组成,通常称为x轴和y轴,它们的交点称为原点。坐标系中的每个点都可以通过一对有序数(x,y)来唯一...
在平面直角坐标系中,点的坐标是数学学习中的基础概念,特别是在中考数学中,这一部分的内容至关重要。平面直角坐标系由两条互相垂直的数轴——x轴和y轴构成,点的位置由其在两个轴上的投影决定。点的坐标通常表示为...
以上是对平面直角坐标系、点的坐标、对称变换、平移、旋转、距离和最短路径问题、菱形和矩形的性质、动态几何以及特殊点坐标的详细阐述。每个知识点都与题目中的内容紧密相关,并进行了深入的解释。
《平面直角坐标系同步测试(2)》是针对八年级数学上册5.2章节的一份课件,主要涉及平面直角坐标系中的点的位置、图形描绘、坐标与图形变换等相关知识。以下是对这些知识点的详细解释: 1. **平面直角坐标系**:...
2. **象限**:平面直角坐标系分为四个象限,按照顺时针方向分别为第一象限、第二象限、第三象限和第四象限。点M(-m,-m+1)的坐标判断需要考虑-m和-m+1的正负性,从而确定它所在象限。 3. **关于原点对称的点**:如果...
3. **直角坐标系的建立**:建立坐标系时,并非一定要选择水平和铅直方向为x轴和y轴,也并不一定要以图形的边为坐标轴。关键是要确保坐标系能够准确地反映图形内点的位置关系。 4. **根据点的坐标画图**:在平面直角...
本资料是针对苏科版数学八年级上册第五章“平面直角坐标系”的单元提优测试题,包含了选择题、填空题和解答题,旨在帮助学生深入理解和掌握平面直角坐标系的相关知识。 一、选择题 1. 点P的坐标满足到两坐标轴的...
【位置与坐标】是数学中的基础概念,尤其在二维直角坐标系中,坐标用于精确地描述点在平面上的...这些知识点在数学学习中非常重要,不仅能够帮助我们理解平面直角坐标系的基本性质,还能培养空间想象和逻辑推理能力。
【知识点详解】 1. 函数自变量的取值范围: 函数中,自变量的取值范围由函数...这些知识点覆盖了初中数学中关于函数、坐标系、图形变换和实际问题的解决等多个方面,是复习和理解函数与平面直角坐标系的重要内容。
在本节高考数学复习内容中,主要探讨了空间直角坐标系的相关知识,适用于苏教版的2014届考生。以下是对这部分内容的详细解释: **一、基础过关** 1. 过点 P(1,, )作平面 xOy 的垂线 PQ,垂足为 Q,则 Q 的坐标为...
等距坐标系统与我们常见的笛卡尔坐标系统不同,它不遵循常规的直角坐标规则,而是通过一种特殊的方式使得每个像素在水平和垂直方向上的长度相等,即使在屏幕上倾斜45度,依然能保持图形的几何形状不变。这种坐标转换...
在数学的平面直角坐标系中,平移是一种基本的几何变换,它可以将图形上的每个点按照特定的方向和距离移动。本练习题主要探讨如何用坐标来表示这种平移,并提供了相关的练习题目和答案,旨在帮助学生巩固这一知识点。...