| Feeling's profile路漫漫其修远兮,吾将上下而求索PhotosBlogLists | Help |
|
4/24/2007 三国志11制霸模式勇将集结不复活单挑14最强武将技巧规则:每次单挑都有五个候选人可以选择单挑,有人有武器,有人没有。战胜持有武器的武将,得武器,体力回复少许;战胜没有武器的武将,体力回复较前者略大;中间败北可以选择复活一次(只有这一次!)体力全满 手戟:太史慈93、典韦95、甘宁94(无需斗志即可实行暗器攻击) 弓:黄忠93(100斗志伪退却,有几率使敌将受伤) 剑:赵云96(斗志提升速度加快) 刀:关羽97(攻击力上升大于丈八蛇矛) 没有武器的武将:颜良94、文丑93、庞德94、马超97、张辽92、许褚96 首先要注重单挑顺序,其次注重技巧。技巧方面就是尽量多防守,少进攻,必杀技一定要留在最后放,否则敌人会通过你的攻击集气,然后给你个必杀技就得不偿失了。 首先单挑太史慈,选择攻击,在损失15%的血以后就可以顺利击败,并获得手戟。 排在第二位的是赵云或者关羽,关羽难度比较大,个人感觉是13人中最强的,建议先选赵云。先攻击几个回合再防御,最后2个必杀技+暗器,PK掉赵云,应该还剩30-40%血,拿到青虹剑,加快斗志提升速度。 第三位可以选张辽,张辽是武力最低的一个,但是比较难打,因为无论是进攻还是防守,都会费不少血,建议先防守1招,然后攻击几招,最后必杀技+暗器搞定。最后还剩20-25%左右血。 第四位和第五位选庞德或者文丑(颜良?),这里面庞德、文丑、颜良是有很大机会秒杀的,而且费血很少。这2关打完以后血应该能够恢复到60-70%。 第六位选择甘宁或者典韦,会费一点血,不过最后应该会超过50%血。 第七位要看黄忠是否出来了,黄忠出来了立即选黄忠,一开始就进攻,不要防守,在15招之前解决战斗。拿到养由基弓。应该还有40-50%血。 第八位:庞德、文丑、颜良中剩下的一个,有机会秒杀,不秒杀也要尽量剩70%以上的血。 第九位:许褚,主防即可。剩75-85%血。 第十位:关羽,这一仗至关重要。关羽很难打,无论是攻击还是防守,都会制你于死地。建议先防守一招,然后对攻,还剩不到45%血时主防,最后必杀技+暗器+伪退。可能还剩10%-30%血,拿到青龙偃月刀,再次加快斗志提升速度。 第十一位:如果血比较多,可以选典韦、甘宁中剩下的一个,血少的话选马超。主防即可,打马超基本不费血,最后2必杀技+暗器+伪退。如果是马超,最后血补全满。 第十二位:如果十一选了马超,那么这一关就要尽量避免失血。一定要保证血大于60%,不要大意哦。 剩下的就是吕布和项羽了:只要一直防守就可以了,打完吕布之后似乎是不会补血的。所以最后要保证30%以上的血,吕布集气很快,有可能会放必杀技。项羽除了一个暗器以外,很菜的。对付这两人都是3必杀技+暗器+伪退,五个大招一次解决问题。 太史慈、黄忠、颜良、文丑、庞德,尽量多进攻,张辽、关羽,进攻+防守,剩下的防守就可以了。最后连续的几个必杀技按快一点,一定要保持连续性,不给敌人喘息的机会。如果必杀技放完了,敌人还有一丝血,就马上切换成进攻,给予最后的一击。 4/5/2007 点亮自己过去的超新星传说中凤凰每隔500年要投入火中以求得新生。有一种恒星在其「临死亡」的剎那,将发生激烈的爆炸,如迴光返照般放出极耀眼的光芒。星球毁灭了自己,却也同时触发了新恒星的诞生。这就是超新星,天上的火凤凰。 在宇宙中,恒星的分类是按照它们的死亡的方式,一类象我们太阳这种,最终安静的成为白矮星,另一类是比太阳大8倍以上的恒星,它们的死亡是爆炸。恒星越大,寿命就急剧的缩短,质量差3倍,寿命就差750倍,也就是说,一个比我们的太阳大3倍的恒星,它的寿命就只有1300万年,所以,生命的进化是不可能托付给大恒星的。但是,宇宙的物质的丰富和流动,却全靠它们。 宇宙在过去有过一个非常单调的开端,只有氢元素和少量的氦元素,然而宇宙在成长,而成长的标志就是重元素的增加,这种增加使宇宙越来越丰富,宇宙的所有的奇迹,都是在有了完整的元素制造之后。而制造元素,就是把氢元素以不同的数目聚合,而要完成所有元素的聚合的场所,就是拥有巨大引力的大恒星。从丰富物质角度来说,大恒星是宇宙中的精品,它们不仅能生产所有的元素,而且由于恒星越大,寿命越短,因此周期也短,所以,恒星的巨无霸是宇宙制造元素效率最高的工厂。不过,宇宙中最大的恒星的质量极限是一百个太阳,如果再大,就会因为自身的核反应过猛而解体。 ![]() 船底座海山二星(Eta Carinae)可能即将爆炸 引力制造元素,但也束缚元素,小恒星大约能制造出十来种元素,但这些元素最终不能在宇宙中流动。大恒星能制造更多的元素,一般超过太阳质量 8倍以上的恒星就能使聚变一往无前,其核心达到几十亿度的高温不断的创造不可思议的聚变,每次聚变所产生的能量都使恒星膨胀得更大一些,于是它就象洋葱一样形成令人吃惊的多层核聚变的巨大空间,这个空间可以达到一百亿公里,装下整个的太阳系。在聚变的深入的过程中,恒星变得越来越危险了,因为元素越重,聚变提供的能量越少,而巨大的恒星又必须靠不断释放的核能支撑。然而,当聚变到排列第26位的铁元素时,摇摇欲坠的恒星遭受到最致命的破坏──因为铁元素的结构极其稳定,它在聚变时不释放能量,于是,巨大而膨胀的恒星将会因核心失去支撑而倒塌。 因此而恒星粉碎性的爆炸,能量的狂飙扫荡天庭,这就是超新星爆发。此刻它的能量相当于正常恒星的一百亿倍,在这个超能量的瞬间,宇宙中所有的元素都被聚变出来了。象金银首饰这种重元素,就是在超新星的爆炸中诞生的,当我们佩戴它们时,要记住宇宙制造高档产品确实是代价很高,它需要报废一颗至少比太阳大8倍以上的恒星,才能使我们披金戴银。 超新星发生在一个恒星即将结束生命时,亦即在红巨星阶段,核心燃料快要消耗殆尽时,恒星会因为没有额外的燃料而自行崩溃。如果恒星的质量够大,恒星内部的内爆层会在接触核心时反弹,产生巨大的爆裂,爆炸所产生的震波会将恒星的所有物质射入太空中。 我们的太阳将会在50亿年后衰亡,因它内部提供予核融合的燃料终於消耗殆尽。到时太阳会变成一个主要由碳和氧组成、密度高而「寒冷」的白矮星。 另一方面,一颗比太阳更重的恒星的中心温度更高。这些巨大星体会在经过一次壮观的爆炸后灭亡,这过程称为「超新星爆炸」。爆炸释出的能量非常巨大,超新星爆炸的光度可能相当於1,000亿万颗恒星同时发出的光芒。 超新星的爆发是在约一秒钟之内完成的。由於高能辐射与爆炸拋射出来的恒星大气相互作用,使得超新星也可能有X射线等辐射。例如SN1987A在爆炸后100多天才被Ginga卫星所探测到它的X射线。而光学波段的突然增亮,首先是由膨胀大气引起的,后来则由Ni56等同位素的衰变提供能量,使得光度下降较为缓慢。图五中给出了典型的超新星光变曲线。超新星爆发的高速拋射物与周围介质相互作用形成的激波引发出电波辐射,而对星周尘埃的加热则可以产生红外辐射。但这些只有周围有稠密的星际物质的II型或Ib、Ic型超新星才能观测得到。 在不到一秒钟时间内释放出1051~1053erg的能量(相当於90个太阳在其一生所释放能量之总和)的天体,它的前身星是什么?产生如此巨大能量的机制是什么?这些是天文学家首先面临的问题。 首先我们来看看Ia型超新星。在它的光谱中缺少氢谱线,而且根据统计它在不同类型的星系中都有可能出现。据此天文学家提出了Ia型超新星是密近双星演化到晚期的终极结果的想法。设想有一密近双星系统,其两个成员星的质量均小於8M¤ ,其中质量大的那一个演化得比较快,在其核心燃烧完氢后,接著燃烧氦,而变成中心为碳和氧的白矮星。这时初始质量较小的那颗成员星的物质就被它吸积。假如物质转移速度小於每年10-8M¤ 的话,在白矮星周围形成氢壳,当它达到核融合点火的温度时,其表面就产生核融合点火爆发,这就是新星爆发的现象,其规模比超新星要小得多。 当转移速率在每年10-6M¤ ~10-8M¤ 之间的话,表面同样会产生核融合,而形成氦,氦形成碳,逐步使其碳核心质量增加,直到钱氏 (Chandrasekhar) 极限的1.4 M¤ 。其中心密度可达到3×109g/cm3,而且中心达到碳点火的温度。碳被点燃,并且融合过程从中心往外迅速传播,在不到一秒钟之内传到白矮星的最外层。其爆炸将产生1053erg的能量,而且爆炸规模巨大无比,以至於将这颗白矮星完全「炸飞」了。由於白矮星中的氢已经燃烧殆尽,所以它的光谱中没有氢线,同时因为它是一种「老年」的恒星,因此会出现在不同的星系之中。 II型的超新星则不同。它的光谱中以氢线为主,而且往往出现在螺旋星系的旋臂上,在那裡往往有恒星正在形成。一个目前被广泛接受的II型超新星爆炸的模型是:一个大质量的恒星(质量大过10M¤ ),在其最初的3000万年甚至更短的时间内,它的核心首先是氢融合为氦,然后氦变为碳和氧,碳变为氖和镁,氧和镁变为硅和硫,直到最终硅和硫融合为铁属元素。上述每种融合过程都释放出大量的能量,维持著恒星的「生命」,而且其核心变得愈来愈密,温度则愈来愈高,以致能够抵抗恒星引力的收缩。但到了核心变为铁心后,由於铁属元素的核束缚能最小,融合无法继续为恒星提供能量,反而要吸收能量。引力收缩就开始,中心的密度和温度继续增大,到 1010K和1010g/cm3时,电子就被压到原子核内而形成富含中子的同位素,而高能辐射又将原子核「撕」成a粒子。这两个过程都要吸收能量,使得重力塌缩变得更快。当中心密度超过2.7×1014g/cm3时,塌缩不能继续,产生反弹而引发超新星爆发。它将外层核融合的剩余物,包括最外层的氢向外拋,而留下一个核核心,也就是中子星。所以在光谱中有强的氢线,同时因为大质量恒星(寿命短;因此我们看到的都是不久前形成的)是和恒星形成区相关的,所以他们往往出现在螺旋星系的旋臂上。至於Ib和Ic型超新星,目前也认为是一种称为「沃夫─瑞叶星」 (Wolf-Rayet stars; W-R stars) 的大质量恒星演化到晚期的结果。由於W-R星有大规模的恒星风,质量流失很大,因此表层已失去了氢甚至氦,所以其光谱中没有氢线(或甚至於氦线)。 超新星1987A(1987年发现的第一个超新星)是近代爆炸的超新星中,最靠近地球的一个,位於169,000光年外(我们银河系的伴星系)的大麦哲伦星系。它也是自从克卜勒在1604年於银河系中观测到超新星以来最明亮的一个;同时是自1885年以来第一个肉眼看得见的超新星。那原来是一个蓝超巨星的位置,其质量约为太阳的20倍。天文学家相信这个星球先是膨胀成红超巨星,在吹开一部份的星球体后,经过收缩与再加热,成为一个蓝超巨星。之后,在短短不到一秒钟,整个星球的中心突然就崩垮了,一阵微中子将中心加热至100亿度。这个过程引爆出震波,将此星球炸散掉,并喷出大量的微中子到太空中。 直至1987年5月,国际紫外线探索号已在超新星的碎片中发现了许多化学元素,显示出这个始祖星球已经过了红巨星期,证实了原来的理论。到了7月,一个日本的人造卫星和德国的望远镜都侦测到从碎片中发射出来的X光线。自8月到11月,更有其他的研究团队侦测到高能的伽玛射线,这是在即将死去的星球中心出现核反应所产生的放射性元素,衰变时所放射出来的。此资料证实了大家所相信的理论,即超新星会产生组成地球大部分的重化学元素。 ![]() 超新星1987A影像 哈伯太空望远镜先进巡天相机 (ACS) 所拍摄的超新星1987A影像,在其四周包围著一串如珍珠项链般的气体环,这些「珍珠」其实是超新星爆发所产生的冲击波,以超过每小时6千万公里的速度追撞上了“恒星在爆炸前数万年所喷出, 膨胀速度较慢的气体”。爆震波追上了这个环,由於碰撞作用,气体受到衝击,温度升高到了数百万至1千万度,因而发出了红外辐射。环中的尘埃是在星风中形成的,而不是在超新星爆发中形成的。光环直径约一光年,光环中央的长椭圆形黯淡星体就是超新星残骸,主要受超新星爆炸时所产生放射性元素鈦 44 衰变辐射加热而发光,未来数十年都还将持续发光。天文学家在 1996 年首次在 SN 1987A 的外圈发现一个亮点,现在则可看出数十个。天文学家推测,未来几年中还将陆续出现更多类似的光点,这些亮点的光会将周围照亮,天文学家届时将可推测超新星爆炸前是如何喷发物质至太空中。当震波逐渐往外移时,产生的紫外线和X射线辐射将加热更多周围过去所喷出的物质。就如同参与钱卓研究计画的科学家理查、麦克雷所说:「超新星1987A将会点亮它自己的过去」。 超新星的爆炸使物质摆脱了引力的束缚,但铁元素的核却坠入引力的深渊,巨大的塌方把电子都压进了质子,于是质子全变成了中子,而中子之间没有电磁力的排斥,原子核可以相互紧紧的挨在一起,这就形成了最致密的物质──中子星,它一立方厘米的质量能达到十亿吨,而它引力强大到让光都要成抛物线才能挣脱。把一个几百万公里直径的物体压缩成只有30公里的直径,就是中子星,而同时被压缩的还有磁场,这是一个匪夷所思的超高能核电站,它可以把表面附着的电子象高压水柱一样喷射出去,它们所具有强烈的方向性可以成为宇宙定位的灯塔。十几年前,人类寻访外星生命的一艘飞行器上所携带的人类的自我介绍,就是用多颗中子星为地球做定位。一些大的超新星爆炸之后,将会产生引力的奇迹──黑洞,巨大的引力把物质化为无形,因为连光都要被吸回它的表面,如果把地球压缩成一个核桃,就是黑洞,因为地球其实是一个强力和电磁力支撑的物体,如果把原子核都毁灭了,地球就将成为几厘米直径的浓缩引力的载体,黑洞的存在已经被证实。 超新星是宇宙中4种力配合的杰作,它们共同建造一个巨大的原子锅炉,然后以锅炉的崩溃所激发的能量完成所有元素的制造,并且在最后的瞬间把元素都彻底的抛洒出去,正因为有这种抛洒,物质才有可能演化,否则,就象有钱不去投资,再多的财富也将没有任何意义。恒星以自身的毁灭造就了宇宙中最伟大的新生。 在超新星的物质弥漫之后,引力将会再次把这些物质凝聚成天体,大的塌缩成恒星,小的形成行星,如果这颗恒星有较长的寿命,而它的周围有若干合适的行星围绕,那么这个长寿的核能和比较靠近它的行星上丰富的宇宙元素的光和热交流,就可能最终产生宇宙中最复杂的物质形态──生命。 ![]() 4/4/2007 宇宙的标尺——Ia型超新星 超新星是最激烈的天体物理现象,它的爆发过程只延续大约一秒鐘,但是释放出极大的能量,超新星爆炸的光度可能相当於1,000万亿颗恆星同时发出的光芒。爆炸时產生的高能粒子是地面上任何加速器都不能达到的, 它提供一个在极端条件下进行的核融合,以及与高能粒子相互作用的实验,包括爆炸过程在内,这样的条件在地面上是永远无法实现的。在周期表中原子序数比铁更高的元素(如锌、金或铅)全都是在超新星爆炸中產生的。超新星爆炸标示了一颗恆星壮烈的死亡,但是也触发了新一代的恆星诞生。 ![]() 超新星Supernova 1994D 天文学家把超新星按它们光谱上的不同元素的吸收线来分成数个类型: I型:没有氢吸收线。 Ia型:没有氢、氦吸收线,有硅吸收线。 Ib型:没有氢吸收线,有氦吸收线。 Ic型:没有氢、氦、硅吸收线。 II型:有氢吸收线。 I型的超新星一般都比II型超新星亮。一般学生最先知道的超新星是II型(Type II)超新星, 是大质量恆星死亡后, 成為黑洞或中子星前的超新星爆炸產生的。 Ia型超新星(Type Ia supernova, Ia唸成one-a, 不是i-a).一般相信(会写一般相信, 就表示并非百分之百有定论)是来自含有白矮星与巨星的双星系统, 白矮星从巨星的外层大气中逐渐吸收质量, 待白矮星的质量超过所谓"钱的限制(Chandrasehkar's limit)"后, 会引发重力塌缩及超新星爆炸。 这种双星系统的爆炸分为两种,一种是新星的爆炸,另外一种则是更剧烈的超新星爆炸。 新星 (Nova) 爆炸: Nova(复数Novae)在拉丁文中代表「新的」,在天文学中「新星」指的是看来像是新產生的星星。新星会在天空中突然变亮,维持几天后,逐渐变暗,至数月后才看不见。但是事实上「新星」并非一个新诞生的星星,而是一颗年老的白矮星爆炸所形成。 新星爆炸是由於一颗普通星星的质量经由吸积盘转移到一颗白矮星上。由於这些物质是由一颗普通的星星上来的,所以裡面含有许多未经核融合的成分,其中氢就佔得最多。当这些物质聚集在白矮星的表面时,形成一层未经核融合反应的燃料层。当这层物质愈来愈厚,它也变得愈来愈密、愈来愈热,最后到达可以產生氢的核融合的条件,突然產生爆炸。 為了明白这些爆炸如何產生,我们要先了解质量如何掉入一颗星球上。 吸积盘 (Accretion Disks) 当伴星质量往白矮星掉落时,由於角动量守恆,事实上物质无法直接掉在白矮星上,而是绕著白矮星转。我们用一个日常生活举例︰一个装满水的洗脸槽,槽内的水原本有些轻微的扰动,不过它的旋转并不明显,一旦我们将塞子拔掉,往排水口流出的水由於角动量守恆,所以变成了漩涡。同样的,掉入白矮星的气体也会因同样的效应形成一个旋转盘,称為吸积盘。 ![]() 中度极化双星系统中的吸积盘 在吸积盘中会发生两件重要的事情︰第一,盘中的气体因為摩擦力及潮汐力而变得十分热。这个吸积盘扮演煞车的角色,让气体旋转速度变慢,掉入白矮星内。靠吸积盘内部的气体温度可以超过100万K,气体会发生强烈的X光。另外,从吸积盘往内掉落至白矮星上的物质会发出巨大的爆炸。 新星的爆炸将白矮星的外层以每秒几千公里的速度往外炸开。虽然往外炸开的物质质量仅有0.0001倍的太阳质量,但是它的光度可达太阳的10万倍。当外层膨胀得愈来愈大,且愈来愈稀薄时,就逐渐变冷,新星看来就逐渐黯淡了。 这个爆炸几乎不会影响这颗白矮星和它的伴星,所以同样的质量转移的过程又开始进行。白矮星外层的燃料层加厚的速度与质量转移的速度有关。根据这个理论,有些新星需要1,000到10万年来累积足够厚的燃料层来產生爆炸;有些则仅需要几週。再发新星 (recurrent novae)、矮新星 (dwarf novae) 及一些相关的不规则变星 (irregular variable stars) 都经歷类似新星的较小规模的爆炸。虽然这几型星球并不一样,不过它们都经歷质量累积在吸积盘的过程。 ![]() 不断发生爆炸的蛇夫座RS (RS Ophiuchi)的双星系统 超新星爆炸: 经典的观点认为,热核爆炸超新星——也就是Ia型超新星——爆炸发生在白矮星——一种燃烧完核燃料(Nuclear Fuel)并且全部由碳(Carbon)和氧(Oxygen)组成的星体——从一个邻近的伴星吸积物质的时候发生。在吸积的同时白矮星会收缩从而导致密度和温度上升。这个过程一直进行到白矮星的质量达到质量极限——也就是所谓的Chandrasekhar质量,大概等于1.4倍的太阳质量。当达到这个状态的时候,由于热核反应不稳定性导致核聚变放出大量的能量,将白矮星外层的物质以很高的速度喷射出去,速度可以达到光速的百分之几。核反应可以将大概0.6个太阳质量的白矮星物质变成一种同位素:放射性的镍56(Nickel-56)。这种同位素的衰变——先是衰变到钴56(Cobalt-56),然后再衰变到铁56(Iron-56)——提供了一个延迟能量来源,这可以维持喷射出去的物质处于高温,导致超新星获得比十亿个太阳更强的峰值光度(光度的定义为单位时间内辐射出来的能量)。 天文学家对于Ia型超新星具有浓厚的兴趣,因为它们可以被用来探索宇宙的膨胀历史。这种超新星的光度很大,这就意味著能够在很远的地方看到——由于光的传播速度有限,这同时也意味著可以看到遥远的过去——而它们的相对视亮度则可以被用来推测它们的距离。超新星光变曲线和峰值光度之间的经验关系可以用来很精确地确定超新星的光度。 所有的Ia型超新星, 当它们的亮度达最高点时,都有著同样的绝对亮度。因为它们发生爆炸的原因都完全相同,起始于白矮星吸收伴星物质的过程一直进行到白矮星的质量达到质量极限,由于热核反应不稳定性导致核聚变放出大量的能量。 但是1996年后, 这一点被新观测给修正了。由Howell等人发现的超新星是SNLS-03D3bb(或者SN2003fg)在光学波段具有发射和吸收谱,由这些信息可以确定这颗超新星是Ia型的。这就意味著它的爆炸是由前面描述的失控热核反应驱动的,而不是驱动其它类型超新星的引力塌缩。但是这颗超新星的峰值光度是典型Ia型超新星爆炸事例的2.2倍。超新星爆炸的光度取决于镍56的质量,在这个案例中,产生这么大的光度需要有1.3倍太阳质量的镍56。产生这么多的镍要求初始喷射物质的质量远远超过Chandrasekhar极限允许的1.4倍的太阳质量。这是因为核聚变不仅产生镍,而且还稳定的铁系同位素,而且SN2003fg的光学谱显示存在更轻元素比如硅(Silicon)、硫磺(Sulphur)和钙(Calcium)的存在。同时还可能存在没有燃烧完全的碳和氧。把这些都考虑在一起,Howell等人估计喷射物的质量达到了2.1个太阳质量。 但是为什么白矮星可以如此之重呢?一种可能是两个邻近的白矮星相互绕转最后融合。这种情况可以通过由引力波导致的星体角动量损失产生。但是这种情况下通常会产生的是中子星而不是超新星爆发。一个可能性更大的解释是,从普通伴星那里被白矮星吸积过来的物质导致白矮星的角动量增加,从而使得白矮星高速转动,可以克服引力的吸引,从而使得白矮星在爆炸之前具有超过极限的质量。 在这种情况下白矮星可以具有多大的质量取决于角动量在星体内部如何分布,也就是说白矮星作为一个整体转动还是各不同部位的转动不一样。较差转动(Differential Rotation)可以使得白矮星的质量达到四倍太阳质量之巨,考虑到从伴星吸积物质有一定限度,白矮星的质量可能被限制在大概两倍太阳质量。 由于多普勒效应的结果——移动物体发出的辐射谱发生变化——SN2003fg的光谱被展宽,而光谱变化的程度显示喷射物质的速度比起典型Ia型超新星来要低。这和超极限质量白矮星是符合的,因为虽然在这种情况下核聚变产生的能量更多,而同时也造成物质脱离引力束缚需要具有更高的能量。高束缚能造成较低的喷射速度。 为了更好地了解Ia型超新星,确定喷射物质的质量分布是非常关键的。比如Ia型超新星是否普遍具有超极限的质量?它们的质量在1.4到2.1倍太阳质量之间有平滑的分布?Howell等人对超新星样例所作的一项分析表明情况可能确实如此。目前的数据和位于质量极限附近的典型Ia型超新星是相容的,而SN2003fg则显得比较例外。这种解释主要是受到了不同以往的超大光度以及对于光度-光变关联关系的破坏这两种异常现象的启发。虽然这种Ia型超新星的亮度非常大,光变曲线的形状则是典型的。 但是这种Ia型超新星爆发现象的发现并不意味著用Ia型超新星作为宇宙学距离指示器有问题。如果假设SN2003fg符合光度-光变形状经验关系,就有可能极大地低估它的光度,从而低估它的距离。但是由于这颗超新星是如此地奇特,在一项宇宙学研究中已经将其排除。光度-光变形状关系是经验性的,并且对Ia型超新星的质量分布没有人为假设。这就已经意味著这个经验关系可以容纳白矮星质量对质量极限有少许偏离,但这并不包括SN2003fg这种情形。 无论如何, 我们可以透过观测Ia型超新星而得知它们的绝对亮度. 一但有了绝对亮度, 和观测到的亮度比较后, 透过平方反比律, 我们就可以算出该超新星的距离, 也就是它的母星系的距离。 6/16/2006 扩展Eclipse视图弹出菜单(二)上一篇文章我们知道了Eclipse弹出菜单的基本用法。其实Eclipse的弹出菜单可以用来做很多文章,简单一点的根据文件类别,我们可以进行不同的文件操作,比如Ant的build.xml我们可以用来build,Java文件我们可以用Java Editor打开,这些基于文件类型的操作我们都可以很容易的实现。但是还有一种情况,如果文件类型一样,我们想进行不同的操作,该怎么实现呢?实际上这样的应用很多,比如同样是Java文件,含有main方法的Java文件有Run和Debug的选项,其它的都没有。还有现在的框架都是基于XML文件进行配置的,如果一个项目使用了多个框架,我们怎么根据不同的XML文件进行框架的区分呢?答案就是enablement的test。 <!ELEMENT test EMPTY> This element is used to evaluate the property state of the object in focus. The set of testable properties can be extended using the propery tester extension point. The test expression returns EvaluationResult.NOT_LOADED if teh property tester doing the actual testing isn't loaded yet.
<plugin>
<extension point="org.eclipse.ui.popupMenus"> <objectContribution id="Advanced.PopupMenus" objectClass="java.lang.Object"> <action id="Advanced.PopupMenus.Action" label="AdvancedPopupMenus" style="pulldown" menubarPath="additions" class="advancedpopupmenus.popup.actions.AdvancedPopupMenusAction" enablesFor="+"> </action> <enablement> <test property="advancedpopupmenus.popup.visable"/> </enablement> </objectContribution> </extension> <extension point="org.eclipse.core.expressions.propertyTesters"> <propertyTester namespace="advancedpopupmenus.popup" properties="visable" type="java.lang.Object" class="advancedpopupmenus.popup.actions.VisablePropertyTester" id="advancedpopupmenus.popup.propertyTesters.visable"> </propertyTester> </extension> </plugin>
id - unique identifier for the property tester package advancedpopupmenus.popup.actions;
import org.eclipse.core.expressions.PropertyTester; import org.eclipse.jdt.core.IMethod; import org.eclipse.jdt.core.IType; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.internal.core.CompilationUnit; public class VisablePropertyTester extends PropertyTester { public boolean test( Object receiver, String property, Object[] args, Object expectedValue ) { if ( !( receiver instanceof CompilationUnit ) ) return false; CompilationUnit unit = (CompilationUnit) receiver; try { IType[] types = unit.getTypes( ); if ( types == null ) return false; for ( int i = 0; i < types.length; i++ ) { IMethod[] methods = types[i].getMethods( ); if ( methods == null ) return false; for ( int j = 0; j < methods.length; j++ ) { if ( methods[j].isMainMethod( ) ) return true; } } } catch ( JavaModelException e ) { e.printStackTrace( ); } return false; } }
<plugin> <extension point="org.eclipse.ui.popupMenus"> <objectContribution id="Advanced.PopupMenus" objectClass="org.eclipse.core.resources.IFile" nameFilter="*.xml"> <action id="Advanced.PopupMenus.Action" label="This is web xml" style="pulldown" menubarPath="additions" class="advancedpopupmenus.popup.actions.AdvancedPopupMenusAction" enablesFor="+"> </action> <enablement> <test property="advancedpopupmenus.popup.visable"/> </enablement> </objectContribution> </extension> <extension point="org.eclipse.core.expressions.propertyTesters"> <propertyTester namespace="advancedpopupmenus.popup" properties="visable" type="org.eclipse.core.resources.IFile" class="advancedpopupmenus.popup.actions.VisablePropertyTester" id="advancedpopupmenus.popup.propertyTesters.visable"> </propertyTester> </extension> </plugin> 注意和上一个例子不同的地方,objectClass,nameFileter和type(在上一个例子中,我们也可以使用objectClass="org.eclipse.core.resources.IFile" nameFilter="*.java"),相应的我们的VisablePropertyTester类也要做一些改动: package advancedpopupmenus.popup.actions; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.eclipse.core.expressions.PropertyTester; import org.eclipse.core.resources.IFile; import org.w3c.dom.Document; import org.w3c.dom.DocumentType; public class VisablePropertyTester extends PropertyTester { public boolean test( Object receiver, String property, Object[] args, Object expectedValue ) { if ( !( receiver instanceof IFile ) ) return false; IFile xml = (IFile) receiver; try { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance( ); DocumentBuilder db = dbf.newDocumentBuilder( ); Document doc = db.parse( xml.getContents( ) ); DocumentType type = doc.getDoctype( ); if(type.getSystemId( ).equalsIgnoreCase( "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd" ))return true; } catch ( Exception e ) { e.printStackTrace( ); } return false; } } 这样根据不同的xml SystemID,我们就能够知道到底这是哪一种框架的配置文件了。 关于界面布局的重新洗牌复杂布局的重用,比较容易实现的就是GridLayout,至于FormLayout,基本上如果相似度不是很大,很难重用。我们在实现很多Page的时候,优先考虑的都会是GridLayout。但GridLayout在界面元素改动较大的时候也拥有一些弊端,比之FormLayout要麻烦的多。 当界面元素拥有上下文的时候,随着其上下文的改变,要想界面元素按照新的上下文重新布局,总是让人头疼。因为首先能想到的方法就是隐藏掉不需要的元素,这样会减少时间和代码上的开销。但是如果采用GridLayout布局的时候,一个Widget隐藏的时候,它仍然占用着界面空间,即使将它的hightHint和widthHint设置为0,依然不能解决问题,因为GridLayout通常设置了verticalSpacing和horizontalSpacing。 现在想到的一个解决方案就是将界面元素重新洗牌。 界面元素的生成由Model里的各个元素来决定。界面的上下文都交由一个属性控制层进行控制,它上承GUI界面,下接业务模型,属于一个过渡的层次。该层可以装饰业务模型,并附加上新的上下文,形成一个新的Model。根据这个新的Model,我们在界面上创造元素。如果Model仅仅只是值发生了变化,我们重新设置界面的值即可。如果Model发生了上下文的变化,比如不需要某个属性了或者是增加一个属性,我们就对整个界面进行重新洗牌,通过一个循环Dispose掉所有的Widget,然后根据新的上下文重新初始化界面元素,并进行赋值。由于MVC的分离,重新初始化界面是很容易的。对于不太复杂的Page,布局上的问题就可以迎刃而解,而且在时间上的开销也不会体现得很明显,至少并看不出显示上的延迟。 |
|||||||||
|
|