JET

JET 指南 一(JET介绍)

概要
生成源代码可以在你的工程中节约时间,并且能减少冗长多余的编码次数。生成源代码是很强大的功能,
但生成代码的程序可能很快变得非常复杂和难于理解。一种降低复杂性,提高可读性的方式就是使用模板。

EMF(Eclipse模型框架)工程包含了两种很强大的工具,用于生成源代码:JET(java Emitter Templates)和JMerge(java Merge)。使用JET,你可以用类似于jsp的语法(实际上是jsp语法的一个子集),很容易的编写用来生成指定代码的模板。JET是一个通用的模板引擎,可以生成SQL,XML,java源代码及其他的从模板中输出的内容。JET位于org.eclipse.emf.codegen plug-in,作为EMF运行时下载的一部分。


在本文中,你将学习怎样去创建JET模板文件,怎样用JET特性和构建工具去自动将模板文件转换为java 类,并学习如何用这些类去生成源代码。本文也提供了简短的JET语法参考。


Contributed by Remko Popma, Azzurri Ltd., remko.popma at azzurri dot jp, July 30, 2003. Last update: May 31, 2004 for EMF 2.0 (Eclipse 3.0).

Jet颜色映射是一种伪彩色(pseudo - color)映射,它将数值数据转换为颜色值,颜色梯度从蓝色到绿色再到红色,大致按照深蓝色(最低值)、浅蓝色、青色、绿色、黄色、橙色、红色(最高值)的顺序变化[^1]。 在不同的编程环境中,使用Jet设置颜色映射的方式有所不同: #### Matlab 在Matlab中,可以使用`colormap(jet)`将当前图形的颜色映射设置为Jet颜色方案。示例代码如下: ```matlab % 创建示例数据 [X,Y] = meshgrid(-10:1:10); Z = X + Y; % 绘制云图 surf(X,Y,Z); % 设置颜色映射为jet colormap(jet); % 显示颜色条 colorbar; ``` #### C++(ITK库) 使用ITK库可以将标量映射到Jet Colormap中,示例代码如下: ```cpp #include "itkJetColormapFunction.h" #include "itkRGBPixel.h" int main(int, char *[]) { using PixelType = itk::RGBPixel<unsigned char>; using ColormapType = itk::Function::JetColormapFunction<float, PixelType>; ColormapType::Pointer colormap = ColormapType::New(); colormap->SetMinimumInputValue(0.0); colormap->SetMaximumInputValue(1.0); std::cout << "0: " << colormap->operator()(0.0f) << std::endl; std::cout << "0.5: " << colormap->operator()(0.5f) << std::endl; std::cout << "1: " << colormap->operator()(1.0f) << std::endl; return EXIT_SUCCESS; } ``` #### Qt 以下是一个简单的Qt中实现Jet颜色条的头文件示例: ```cpp #ifndef LCOLORMAP_H #define LCOLORMAP_H #include <QWidget> class LColorMap : public QWidget { Q_OBJECT public: explicit LColorMap(QWidget *parent = nullptr); QColor getColor(double value); protected: void paintEvent(QPaintEvent *event) override; signals: public slots: void setMinMax(double min,double max); private: QVector<QColor> colors; // 颜色数组 double min = 0; double max = 100; }; #endif // LCOLORMAP_H ``` 不过,Jet颜色映射也存在一些缺点,其颜色变化过于剧烈,会导致人眼对于实际数据的误解,很多平滑过渡的区域会被误解为有较大的梯度。而且由于Jet映射对于人眼感知来说变化不是常量,所以它不具有感知均匀性,这种影响对于色盲人士来说更为明显,会造成伪彩图映射出的信息变得模糊[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值