出师表

诸葛亮(三国)

  先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。

  宫中府中,俱为一体;陟罚臧否,不宜异同。若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理,不宜偏私,使内外异法也。

  侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下。愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。

  将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰能,是以众议举宠为督。愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。

  亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之信之,则汉室之隆,可计日而待也。

  臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。

  先帝知臣谨慎,故临崩寄臣以大事也。受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;故五月渡泸,深入不毛。今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。此臣所以报先帝而忠陛下之职分也。至于斟酌损益,进尽忠言,则攸之、祎、允之任也。

  愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏。臣不胜受恩感激。今当远离,临表涕零,不知所言。

诫兄子严敦书

马援(东汉)

援兄子严、敦,并喜讥议,而通轻侠客。援前在交趾,还书诫之曰:“吾欲汝曹闻人过失,如闻父母之名:耳可得闻,口不可得言也。好议论人长短,妄是非正法,此吾所大恶也:宁死,不愿闻子孙有此行也。汝曹知吾恶之甚矣,所以复言者,施衿结缡,申父母之戒,欲使汝曹不忘之耳!

“龙伯高敦厚周慎,口无择言,谦约节俭,廉公有威。吾爱之重之,愿汝曹效之。杜季良豪侠好义,忧人之忧,乐人之乐,清浊无所失。父丧致客,数郡毕至。吾爱之重之,不愿汝曹效也。效伯高不得,犹为谨敕之士,所谓‘刻鹄不成尚类鹜’者也。效季良不得,陷为天下轻薄子,所谓‘画虎不成反类狗’者也。讫今季良尚未可知,郡将下车辄切齿,州郡以为言,吾常为寒心,是以不愿子孙效也。”

东汉伏波将军马援

东汉时期名将辈出,比如燕然勒石的窦宪,还有收复西域五十多国的班超,此外还有一个人虽然声名不显,但战绩斐然,他就是马援。
马援,东汉初期著名军事家,出生于公元前14年,扶风郡(今陕西一带)人,曾祖父马通是汉武帝时期的大臣,父亲马仲曾官至玄武司马。
马援年少时就胸怀大志,常常想着干出一番大事业。西汉末年王莽篡政,建立新朝,天下大乱,军阀四起,马援投靠了陇西军阀隗嚣,后又投靠光武帝刘秀,为稳固东汉政权立下赫赫战功。

归顺刘秀后,马援开始南征北战。建武十一年(公元35年)刘秀任命马援为陇西太守,平定塞外羌族叛乱,马援率步骑兵三千余人在甘肃临洮大败羌人,斩敌数百人,俘获牛羊上万头,八千多名羌人望风而降。
公元37年,羌人再次叛乱。马援奉命率四千余人前去平乱,切断羌人水源,羌人不敢与汉军决战,首领带领几十万户人逃到塞外,剩下的人选择了投降,羌族叛乱再次被平定。

公元40年,征侧、征贰两姐妹在交趾郡起兵造反,公然与东汉为敌,交趾各部族纷纷响应,叛军在短时间内占领东汉岭南一带六十多座城池,声势浩大。
公元42年,光武帝刘秀任命马援为伏波将军,领兵平定交趾叛乱。马援领兵到达岭南后,一路势如破竹,大败交趾叛军,斩敌数千人,降者过万。公元43年,马援斩首叛军首领征侧、征贰两姐妹,平定交趾叛乱,因军功被封为新息侯。

平定交趾后,马援下令在当地立下两根铜柱作为汉朝最南的边界,并在铜柱上刻上“铜柱折,交趾灭”六个大字,警告交趾人不要毁坏铜柱。马援立铜柱的地方一般认为在现在越南中部的广平,广治一带,这两根铜柱让交趾人近百年不敢作乱,直到东汉末年中原大乱,交趾人才再次起兵造反。
公元48年,武陵郡五溪蛮发生叛乱,刘秀派武威将军刘尚前去平定叛乱,不料刘尚轻敌大意,竟然全军覆没。这时已经62岁高龄的马援请求领兵出战,公元49年马援领兵击败叛乱蛮兵,斩敌两千余人,叛军逃入深山, 据险而守。
当时天气酷热,很多汉军都染上暑疫身亡,马援也染上了疾病,但每天仍然坚持带病巡查。当时马援军中有个叫耿舒的将领,因为与马援不合,就给刘秀写信状告马援指挥不利,导致汉军受挫。

刘秀收到信后,立即派中郎将梁松前去问责马援,并代为监管军队。不过等梁松到时,马援已经病死了。这梁松也一直与马援不合,于是趁此机会大肆诬陷马援,罗列了很多莫须有的罪证,马援已死,自然没法为自己辩驳。
刘秀收到梁松罗列的马援罪证后,勃然大怒,下令收回马援新息侯的印绶,剥夺他的爵位,直到二十多年后,汉章帝上位后才得以平反,追谥“忠成”,唐朝时被列为武庙六十四将之一。
马援戎马一生,死后却被剥夺爵位,这对他来说是极不公平的,也是极其可悲的。历朝历代都不缺乏搬弄是非的小人,甚至不少朝代都亡在了一些小人手上,不过好在马援最终被平冤昭雪,还他了一个清白。

西汉伏波将军路博德

路博德西河平州(今山西离石)人,生卒年不可考,曾任右北平太守,右北平不是一个普通的郡县,“飞将军”李广就曾经在这里担任过太守,而右北平郡治在平刚县平刚城(治今内蒙古宁城县西南),是大汉帝国与匈奴交战的前线。路博德为西汉武帝时期重要将领,于元狩四年汇合骠骑将军霍去病,大败北匈奴,立下赫赫战功,被刘彻下诏封为符离侯。

到了元鼎四年,也就是公元前113年,南越王婴齐薨,太子兴代立。

汉武帝元鼎五年(公元前112年),南越王相吕嘉发动叛乱,杀害汉朝使节和南越王赵兴及王太后,武帝任命路博德为伏波将军、杨仆为楼船将军,南越人听说是路博德过来征讨纷纷投降,而路博德则继续派人追捕直至砍下了吕嘉的头颅。

也是在伏波将军南下肃清残敌的时候在岭南地区设立了珠崖、儋耳两郡,路博德不仅有足够的武勇,还足智多谋,他进攻海南岛后,为了安定人心,将一些战船焚掉,表示平息叛乱后,将不再用兵,百姓可安居乐业,这也是他“兵不血刃,而定全粤”的一个缩影。

后来路博德后因犯法夺取爵位,改任强弩都尉,余生都屯守在居延,替大汉镇守边疆。

AutoCAD 函数系列之二

Private Function GetAngle(ByRef APoint() As Double, ByRef BPoint() As Double) As Double ‘X – Y 坐标系内 ① ② 两点连线的角度
Dim XDiff, YDiff As Double
XDiff = BPoint(0) – APoint(0)
YDiff = BPoint(1) – APoint(1)
Dim dTemp As Double
‘①––––②
If XDiff > 0 And YDiff = 0 Then ‘X 轴右段
GetAngle = 0 ‘弧度
End If
‘––––②
‘–––/
‘––/
‘–/
‘①
If XDiff > 0 And YDiff > 0 Then ‘第一象限
dTemp = YDiff / XDiff
GetAngle = Atn(dTemp) ‘弧度
End If
‘②
‘|
‘|
‘|
‘①
If XDiff = 0 And YDiff > 0 Then ‘Y 轴上段
GetAngle = 0.5 * PI ‘弧度
End If
‘②
‘–\
‘––\
‘–––\
‘––––①
If XDiff < 0 And YDiff > 0 Then ‘第二象限
dTemp = Abs(XDiff) / YDiff
GetAngle = 0.5 * PI + Atn(dTemp) ‘弧度
End If
‘②––––①
If XDiff < 0 And YDiff = 0 Then ‘X 轴左段 GetAngle = 1 * PI ‘弧度 End If ‘––––① ‘–––/ ‘––/ ‘–/ ‘② If XDiff < 0 And YDiff < 0 Then ‘第三象限 dTemp = Abs(YDiff) / Abs(XDiff) GetAngle = 1 * PI + Atn(dTemp) ‘弧度 End If ‘① ‘| ‘| ‘| ‘② If XDiff = 0 And YDiff < 0 Then ‘Y 轴下段 GetAngle = 1.5 * PI ‘弧度 End If ‘① ‘–\ ‘––\ ‘–––\ ‘––––② If XDiff > 0 And YDiff < 0 Then ‘第四象限
dTemp = XDiff / Abs(YDiff)
GetAngle = 1.5 * PI + Atn(dTemp) ‘弧度
End If
‘①×②
If XDiff = 0 And YDiff = 0 Then ‘原点
GetAngle = 0 ‘弧度
End If
End Function

Private Function GetDistance(ByRef APoint() As Double, ByRef BPoint() As Double) As Double ‘数组做参数, 两点的矢量距离
‘获得从 APoint 至 BPoint 的有方向距离,从西到东的扇形面积内为正(边界定义如下,正北到正南为负,正南到正北为正)
GetDistance = (BPoint(0) – APoint(0)) ^ 2 + (BPoint(1) – APoint(1)) ^ 2 ‘图形单位
GetDistance = Sqr(GetDistance) ‘图形单位
Dim iSign As Integer
If GetAngle(APoint, BPoint) > 0.5 * PI And GetAngle(APoint, BPoint) <= 1.5 * PI Then
iSign = -1
Else
iSign = 1
End If
GetDistance = iSign * GetDistance
End Function

Private Function GetSide(ByRef APoint() As Double, ByRef BPoint() As Double, ByRef CPoint() As Double) As String ‘数组做参数
‘判断点 CPoint 在从点 APoint 至点 BPoint 形成的有方向直线的哪一侧
Dim Vector01X As Double
Dim Vector01Y As Double
Vector01X = BPoint(0) – APoint(0)
Vector01Y = BPoint(1) – APoint(1)

Dim Vector02X As Double
Dim Vector02Y As Double
Vector02X = CPoint(0) – APoint(0)
Vector02Y = CPoint(1) – APoint(1)
Select Case Vector01X * Vector02Y – Vector02X * Vector01Y
Case 0
GetSide = “ABOVE”
Case Is > 0
GetSide = “LEFT”
Case Is < 0
GetSide = “RIGHT”
End Select
End Function

Private Function GetPosition(ByRef APoint() As Double, ByRef BPoint() As Double, ByRef CPoint() As Double) As String ‘数组做参数
‘判断点 CPoint 在从点 APoint 至点 BPoint 形成的有方向直线的哪一段,三点不共线 返回 -1
GetPosition = “-1”
If Not GetSide(APoint, BPoint, CPoint) = “ABOVE” Then Exit Function
If GetDistance(APoint, BPoint) >= 0 And GetDistance(APoint, CPoint) >= 0 Then
If GetDistance(APoint, BPoint) >= GetDistance(APoint, CPoint) Then
GetPosition = “INSIDE”
Else
GetPosition = “FRONT”
End If
End If
If GetDistance(APoint, BPoint) < 0 And GetDistance(APoint, CPoint) < 0 Then If GetDistance(APoint, BPoint) < GetDistance(APoint, CPoint) Then GetPosition = “INSIDE” Else GetPosition = “FRONT” End If End If If GetDistance(APoint, BPoint) >= 0 And GetDistance(APoint, CPoint) < 0 Then GetPosition = “REAR” End If If GetDistance(APoint, BPoint) < 0 And GetDistance(APoint, CPoint) >= 0 Then
GetPosition = “REAR”
End If
End Function