当前位置:  编程技术>移动开发
本页文章导读:
    ▪球状建模        球形建模 opengl里的对球形的建模:首先要把球形表式由点组成的模型。现在的问题是:怎么把这个球用点集进行表示。 代码如下: final int UNIT_SIZE=10000; ArrayList<Integer> alVertix=new .........
    ▪ MKMapView 增添图片        MKMapView 添加图片 From: http://www.cocoachina.com/newbie/basic/2012/0201/3926.html     本文由论坛会员yunhuaikong分享   以下为两张图片。如下: 适当的代码段添加如下annotation. MapAnnotation是实现了MKAnnotat.........
    ▪ 大家的程序框架都如何样的       大家的程序框架都怎么样的啊 兄弟们,大家的程序框架都怎么样的啊?   我的是这样的: BusinessController BusinessService BusinessListener 主要就这三个, 供其它的service和controller 继承。   BusinessCon.........

[1]球状建模
    来源: 互联网  发布时间: 2014-02-18
球形建模

opengl里的对球形的建模:首先要把球形表式由点组成的模型。现在的问题是:怎么把这个球用点集进行表示。

代码如下:

    	final int UNIT_SIZE=10000;
    	ArrayList<Integer> alVertix=new ArrayList<Integer>();//存放顶点坐标的ArrayList
    	final int angleSpan=18;//将球进行单位切分的角度
        for(int vAngle=-90;vAngle<=90;vAngle=vAngle+angleSpan){//垂直方向angleSpan度一份
        	for(int hAngle=0;hAngle<360;hAngle=hAngle+angleSpan)//水平方向angleSpan度一份
        	{//纵向横向各到一个角度后计算对应的此点在球面上的坐标
        		double xozLength=scale*UNIT_SIZE*Math.cos(Math.toRadians(vAngle));
        		int x=(int)(xozLength*Math.cos(Math.toRadians(hAngle)));
        		int z=(int)(xozLength*Math.sin(Math.toRadians(hAngle)));
        		int y=(int)(scale*UNIT_SIZE*Math.sin(Math.toRadians(vAngle)));
        		//将计算出来的XYZ坐标加入存放顶点坐标的ArrayList
        		alVertix.add(x);alVertix.add(y);alVertix.add(z);
        	}
        } 	

讲解:

1. 首先把球想成由很多的半径不一样的圆所组成的。把球想像成由很多平形于x,z平面的圆所组成的。

2. x,z轴的圆的角度是由0-360,y轴的变动由-90到90。

3. 在java里,三角函数要用弧度计算,而我们平实一般都是角度来计算。其实不管三角函数用的是角度和弧度,其都是度量的是角的大小,所以对于同一个角,其三角函数的值都是一样的(不管是用角度计算,还是用弧度计算)。所以sin(x)就不要注重其x是角度还是弧度,只要关心,其是由对边/斜边(前题是直角三角形)。

4. 如果对于计算球上每个点的坐标,不太理解,可以在笛卡尔级坐标系里,画一个点,再把这个点进行映射到三个坐标轴上去,就可以了。

注:角度和弧度的理解:http://hi.baidu.com/kent_edwin/blog/item/9425f0029e06967e3812bb28.html


 

 

 


    
[2] MKMapView 增添图片
    来源: 互联网  发布时间: 2014-02-18
MKMapView 添加图片

From: http://www.cocoachina.com/newbie/basic/2012/0201/3926.html

 

 

本文由论坛会员yunhuaikong分享
 

以下为两张图片。如下:

适当的代码段添加如下annotation. MapAnnotation是实现了MKAnnotation的NSObject类:

 

CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(latitude, longitude);

 

MapAnnotation *annotation = [[MapAnnotation alloc] initWithcoordiante: coordinate];

[map_view addAnnotations: annotation];

 

[annotation release];

 

 

 
原文链接:http://hi.baidu.com/yunhuaikong/blog/item/26a52283b60f34a16c811997.html
原帖连接:http://www.cocoachina.com/bbs/read.php?tid=91461

    
[3] 大家的程序框架都如何样的
    来源: 互联网  发布时间: 2014-02-18
大家的程序框架都怎么样的啊

兄弟们,大家的程序框架都怎么样的啊?

 

我的是这样的:

BusinessController

BusinessService

BusinessListener

主要就这三个, 供其它的service和controller 继承。

 

BusinessController实现BusinessListener这个协议

BusinessService是BusinessController的成员变量,初始化的时候需要一个BusinessListener,一般传self

BusinessController主要就是发起网络异步请求 ,回来的时候通知初始化的时候需要一个BusinessListener

 

缺点:

1. 发起请求后,假如controller 立即释放 比如马上返回,这样回调的时候程序会爆掉。  需要在BusinessController 的dealloc方法里  把BusinessService 的 BusinessListener 设成nil

-(void) dealloc
{
    if([self.service isKindOfClass:[BusinessService class]])
        ((NDKBusinessService *)self.service).businessListener = nil;
        。。。
        。。。
}
   

 

2. 由于发出网络请求后,都会回到同一个回调方法。。。所以会有一堆的判断,以区别不同的请求, 比如

-(void) recentItems
{
    actionType = ACTION_RECENT_ITEMS;
  
    //send request
}

- (void)requestFinished:(ASIHTTPRequest *)request
{
    [super requestFinished:request];
		switch (actionType)
        {
            case ACTION_RECENT_ITEMS:
                [self parseRecentItems:dict];
                break;
            case ACTION_RECENT_ITEMS_AWAKE_FROM_BACK:
                [self parseRecentItems:dict];
                break;
			。。。
			。。。
}
 

 

3. 同时发起多个异步请求不方便。 需要线性发送。  这个是这个框架的最大的问题。

   举例说明:

self.service = [SerciceA alloc] initWithLisener:self]; 
[self.server invokeA]; //1
	
self.service = [SerciceB alloc] initWithLisener:self];//2
[self.service invokeB]; //3
 

用NSURLConnection没问题,用ASIHTTPRequest 会爆掉的,不信你可以试试,哈哈。。

原因是执行//3 的时候 SerciceA貌似会被release掉,没有被某个thread retain 住

 

替换方案:

1. 专门弄个thread, 开一个runloop, 专门用来发送请求和回调给controller. 

   这样做的好处有二

   1). 省去了一堆的 actionType,因为是同步方法了

   2). 可以同时发送多个请求。。。让runloop 来retain 那个service

 

   缺点:

   让runloop 发送请求的时候,传参数太麻烦了。。。

一般是这样的: 【self performSelector: onThread: withObject:waitUntilDone:]   看到withObject , 我表示很不淡定

2. 把异步请求全部改成同步请求


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
docker中文入门学习手册 iis7站长之家
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3